(navigation image)
Home American Libraries | Canadian Libraries | Universal Library | Community Texts | Project Gutenberg | Children's Library | Biodiversity Heritage Library | Additional Collections
Search: Advanced Search
Anonymous User (login or join us)
Upload
See other formats

Full text of "ibm :: 360 :: os :: R19 Jun70 :: GY28-6613-5 OSjobMgmt PLM Jun70"

File No. S360-36 (OS) 
GY28-6613-5 



Program Logic 



IBM System/360 Operating System: 
Job Management/ 
Program Logic Manual, 

Program Number 3G0S-CI-505 



This publication describes the internal logic 
within the job management portion of the IBM 
System/360 Operating System Primary Control 
Program. Job management prepares jobs for 
execution, and directs the disposition of data 
sets created during job execution. It also 
handles all communication between the operator 
and the primary control program. Included in 
the publication are descriptions of tables and 
work areas used by the job management routines 
and a directory of names and purposes of con- 
trol sections, assembly modules, and load 
modules. 

The information contained in this publication 
applies only to the primary control program. 

This manual is intended for persons involved in 
program maintenance, and system programmers who 
are altering the program design. Program logic 
information is not necessary for use and operation 
of the program. 



S ixth Editio n (June, 1970) 

This is a major revision of, and obsoletes, GY28-6613-4. In 
addition to incorporating information previously released, 
this edition also describes the changes made to primary con- 
trol program job management in Release 19 of the operating 
system. These changes include: 

• The Write-To- Programmer (WTP) facility of the Write-To- 
Operator and Write-To-Operator-With-Reply macro 
instructions 

• Description of and figure for the Write-To-Programmer 
Control Block (WTPCB) 

• The In-Stream Procedure job control feature 

• Description of and figure for the In-Stream Work Area 

• Explanation of the loading and deletion of the Device 
Name and Device Mask Tables 

• New Key Values for the JCL Scan Routine 

• Changes to Job Management Tables 

• Additional assembly modules in the SYS1. NUCLEUS, SYSl. 
SVCL1B, and SYS1.LINKLIB data sets 

Other changes to text, and small changes to illustration, are 
indicated by a vertical line to the left of the change; 
changed or added illustrations are denoted by the symbol • to 
the left of the caption. 

I This edition applies to Release 19 of IBM System/360 
Operating System, and to all subsequent releases until other- 
wise indicated in new editions or Technical Newsletters. 
Changes are continually made to the information herein; 
before using this publication in connection with the opera- 
tion of IBM Systems, consult the latest IBM Systern/360 SRL 
Newsletter, Order No. GN20-0360, for the editions that are 
applicable and current. 



Requests for copies of IBM publications should be made to 
your IBM representative or to the IBM branch office serving 
your locality. 



A form for readers" comments is provided at the back of 
this publication. If the form has been removed, comments may 
be addressed to IBM Corporation, Programming Systems Publica- 
tions, Department D58, PO Box 390, Poughkeepsie, H. Y. 12602 



Copyright International Business Machines Corporation 1966, 1967, 1968, 1969, 1970 



Preface 



This publication describes the structure of 
the sequential scheduler configuration of 
job management, its functions, and the con- 
trol flow between its major routines. It 
is divided into an introduction in which 
job management is briefly described and 
three major sections, master scheduler, in- 
terpreter, and initiator /terminator, in 
which the corresponding components are de- 
scribed in greater detail. Included are 
four appendixes. Appendix A describes two 
subroutines used frequently by job manage- 
ment routines. Appendix B shows job man- 
agement tables and work areas that are not 
described in the body of the publication. 
Appendix C lists job management load 
modules and the assembly modules that each 
contains. Appendix D lists the acronyms 
used in this publication and the meaning of 
each. Further information on job manage- 
ment may be obtained from the program 
listings . 



Readers should have a thorough under- 
standing of IBM System/360 programming and 
should be familiar with the following 
publications : 



IBM System/360 Operating System ; 

Introduction , GC28-653U 

Concepts and Facilities , GC28-6535 

Operator's Reference , GC28-6691 

Job Control Language Reference , 
GC28-6539 

Introduction to Control Program Logic, 
Program Logic Manual , GY28-6605 

System Control Blocks , GC28-6628 



Contents 



INTRODUCTION 9 

Job Scheduler Functions . 9 

Master Scheduler Functions 9 

Job Processing . 10 

Entry to Job Management Following 

Initial Program Loading 10 

Entry to Job Management Following 

Step Execution . 10 

Control Statement Processing 10 

Step Initiation 10 

Job and Step Termination 10 

Operator -System Communication 

Processing 10 

Command Processing 12 

WTO/WTOR Macro Instruction 

Processing 12 

External Interruption Processing . . 13 

Load Modules 13 

MASTER SCHEDULER 14 

Master Scheduler Control Flow 14 

Console Interrupt Routine .16 

Master Command EXCP Routine 16 

Master Command Routine 16 

Write-To-Operator Routine 17 

WTP Error Handling 18 

WTP Control Transfer 18 

External Interrupt Routine 18 

INTERPRETER 19 

Initializing the Interpreter 20 

Input And Control Operations 20 

Reading Control Statements 20 

End-of-Data and Null Statements ... 20 

Processing Control statements .... 21 
Processing JOB, EXEC, and DD 

Statements . 22 

Queue Entry Processing 22 

Post-Processing Entry 23 

Scanning the JCL statement 24 

Processing JCL Statements 28 

Recognizing Checkpoint Restart ... 28 

Auxiliary Routines 34 

The Get Parameter Routine 34 

The Test and Store Routine 35 

The Dictionary Entry Routine 36 

The Dictionary search Routine . . . .36 

The Interpreter Message Routine ... 36 

The Queue Manager Interface Routine . 36 

Interpreter Termination 37 

INITIATOR/TERMINATOR 38 

Initiator Control 39 

System Control Routine 39 

Execute Statement Conditional 

Execution Routine 39 

JFCB Housekeeping Routines 40 

JFCB Housekeeping Control Routine . 41 

Allocate Processing Routine .... 41 

Fetch DCB Processing Routine .... 41 

GDG Single Processing Routine ... 41 

GDG All Processing Routine 41 



Patterning DSCB Processing Routine . 42 
Error Message Processing Routine . . 42 

Allocation and Setup 42 

Allocation Control Routine 42 

Demand Allocation Routine 44 

Allocate Work Table Construction . .44 
Volume Affinity Resolution ..... 45 
Data Set Device Requirement 

Calculation 46 

Channel Load Assignments 46 

Allocation of Resident Devices ... 47 

Device Range Reduction 49 

SYSIN Allocation 50 

Specific Device Allocation 50 

Exits From Demand Allocation .... 50 

Automatic Volume Recognition 50 

Processing Requests for Mounted 

Volumes 51 

Processing Requests for Unmounted 

Volumes 51 

Decision Allocation Routine 52 

Data Set Selection 53 

Device Selection . 53 

Device Allocation .... 53 

TIOT Construction Routine 54 

External Action Routine ....... 55 

Space Request Routine 56 

Obtaining Space If a Device Was 

Allocated 56 

Obtaining Space If a Device Was Not 

Allocated 56 

TIOT Compression Routine 56 

DADSM Error Recovery Routine 56 

Allocation Error Routines 57 

Step Initiation 57 

Termination 58 

Step Termination 58 

Job Termination Routine 59 

APPENDIX A: MAJOR SUBROUTINES 61 

Table store Subroutine 61 

Disposition and Unallocation Subroutine 62 
Entry From the Step Termination 

Routine 62 

Disposition Processing 62 

Device Availability Processing ... 63 
Entry From the Job Termination 

Routine 63 

APPENDIX B: TABLES AND WORK AREAS ... 65 

Account Control Table 65 

Device Mask Table 66 

DSNAME Table 66 

Generation Data Group Bias Count Table . 67 

| In- Stream Procedure Work Area 68 

Job Control Table 69 

| Job File Control Block 71 

Master Scheduler Resident Data Area. . . 73 

New Reader or Writer Table 75 

Passed Data Set Queue 76 

Step Control Table 77 

Step Input/Output Table 79 



System Message Block ..... 81 

Volume Table 81 

Write-To-Programmer Control Block ... 82 

APPENDIX C: LOAD MODULES AND ASSEMBLY 

MODULES 83 

Load Modules 83 

Load Modules Contained in the 

SYS1. NUCLEUS Data Set 83 

Load Modules Contained in the 

SYS1.SVCLIB Data Set 84 



Modules Contained in the 

SYSl.LINKLIB Data Set . 84 

Assembly Modules and Control Sections . 99 
Control Sections and Assembly Modules . 106 

| APPENDIX D: LIST OF ACRONYMS 108 

CHARTS 109 

INDEX 165 



Figures 



Illustrations 



Figure 1. Job Management Control 

Flow 11 

Figure 2. Attention Interruption 

Processing Flow 12 

Figure 3. WTO/WTOR Macro Instruction 

Processing Flow 12 

Figure 4 . External Interruption 

Processing Flow 13 

Figure 5. Master Scheduler - Command 

Processing Network 15 

Figure 6. Master Scheduler 

Interruption Queue Element 16 

Figure 7. Interpreter Data Flow ... 19 
Figure 8. Internal List Entry Format 24 
Figure 9. scan Dictioneiry Entry 

Format 25 

Figure 10. JOB statement Parameter - 

Dispositions 29 

Figure 11. EXEC Statement Parameter 

Dispositions 29 

Figure 12. DD Statement Parameter 

Dispositions (Part 1 of 4) 30 

Figure 13. Keyword Branch Table Entry 34 
Figure 14. Parameter Descriptor Table 

(PDT) 35 

Figure 15. Linkage Control Table ... 39 
Figure 16. selected Job Queue .... 39 
Figure 17. Execute statement COND 

Parameter Options 40 

Figure 18. Formulas for Determining 

Allocation Table Sizes 43 

Figure 19. Relative Positions of 

Tables Used for Allocation 43 

Figure 20. Allocate Control Block ... 44 
Figure 21. Allocate Volume Table 

Entry 44 

Figure 22. Allocate Work Table Entry . 45 
Figure 23. Allocate Work Table Entry - 
Sources 46 



Figure 24. Scheduler Lookup Table . , 48 

Figure 25. Channel Load Table .... 49 
Figure 26. Potential User on Device 

Table 53 

Fiqure 27 . Formulas for Determining 
Task Input/Output Table Space 

Requirements .55 

Figure 28. Task Input/Output Table . . 55 
Fiqure 29. Task Input/Output Table 

Entry sources 55 

Fiqure 30. Macro Parameter List ... 58 
Fiqure 31. Table Store Subroutine 

Parameter Area 62 

Fiqure 32. QMPCA-QMPEX List 62 

Fiqure 33. Table store Subroutine 

Parameter Requirements 62 

Fiqure 34. Account Control Table ... 65 

Fiqure 35. Device Mask Table 66 

Fiqure 36. Dsname Table 66 

Fiqure 37. GDG Bias Count Table ... 67 
Fiqure 38. In- Stream Procedure Work 

Area 68 

Fiqure 39. Job Control Table 70 

Fiqure 40. Job File Control Block 

(Part 1 of 2) 71 

Fiqure 40. Job File Control Block 

(Part 2 of 2) . 72 

Fiqure 41. Master Scheduler Resident 

Data Area 74 

Fiqure 42. New Reader or Writer Table 75 
Fiqure 43. Passed Data Set Queue 

Tables . . . c 76 

Fiqure 44. step Control Table and SCT 

Extension Block 78 

Fiqure 45. Step Input/Output Table . . 80 

Fiqure 46. System Messaqe Block ... 81 

Fiqure 47. Volume Table 81 

Fiqure 48. Write-To-Programmer Control - 

Block 82 



Charts 



Chart 01 
Chart 02 
Chart 03 
Chart 04 
Chart 05 
Chart 



Job Management 

Master Scheduler 

Console Interrupt Routine 
Master Command EXCP Routine 
Master Command Routine . . . 
Write-to-Operator Routine 
Write-to-Operator 

With Reply Routine 

Chart 08. Write-to-Programmer 

(Part 1 of 5) 

Write-to-Programmer 

(Part 2 of 5) , 

Write-to-Programmer 

(Part 3 of 5) 

Write-to-Programmer 

(Part 4 of 5) , 

Write-to-Programmer 

(Part 5 of 5) 

External Interrupt Routine 
Interpreter Control Flow . , 
Interpreter Initialization 
Interpreter Control Routine 
Interpreter Scan Routine . , 
JCL Statement Processors 
In-Stream Procedure Routines 
Interpreter Termination . . 
Initiator/Terminator ... 

Initiator Control 

System Control Routine . . 
Execute Statement 

Conditional Execution Routine .... 

Chart 25. JFCB Housekeeping Routines 

Chart 26. JFCB Housekeeping Control 

Routine 

Chart 27. 

Chart 28. 

Chart 29. 

Routine 



06, 
Chart 07, 



Routines 
Chart 09. 
Routines 
Chart 10. 
Routines 
Chart 11. 
Routines 
Chart 12. 
Routines 
Chart 13. 
Chart 14. 
Chart 15. 
Chart 16. 
Chart 17. 
Chart 18. 
| Chart 19. 
Chart 20. 
Chart 21. 
Chart 22. 
Chart 23. 
Chart 24. 



Mount Control Volume Routine 
Allocate Processing Routine 
Fetch DCB Processing 



109 
110 
111 
112 
113 
114 

115 

116 

117 

118 

119 

120 
121 
122 
123 
124 
,125 
,126 
127 
128 
,129 
,130 
,131 

,132 
,133 

,134 
135 
136 

,137 



Chart 30 
Routine 
Chart 31 
Chart 32 
Routine 
Chart 33 
Routine 
Chart 34 
Chart 35 
Chart 36 
Chart 37 



GDG Single Processing 



GDG All Processing Routine 
Patterning DSCB Processing 

Error Message Processing 



138 
,139 

,140 



141 
142 
143 
144 



Allocation and Setup . . 

Allocation Control Routine 

Demand Allocation Routine 

Automatic Volume 

Recognition (IEFXV001) . . 145 

Chart 38. Automatic Volume 

Recognition (IEFXV002) . . 146 



Chart 
Chart 
Chart 
Chart 42 
Chart 43 
Chart 
Chart 
Chart 
Chart 47. 
Chart 48. 
Chart 49. 
Chart 50. 



39 

40, 

41, 



44. 
45. 
46. 



Obtain Devices 147 

Decision Allocation Routine 148 
TIOT Construction Routine .149 
External Action Routine . .150 
Space Request Routine .... 151 
DADSM Error Recovery Routine 152 
TIOT Compression Routine . .153 

Step Initiation 154 

Termination 155 

Step Termination Routine . .156 
Restart Preparation Routine .157 
Job statement Condition 

Code Routine 158 

Chart 51. Job Termination Routine . .159 
Chart 52. Disposition and 
Unallocation Subroutine — Entry From 

Step Termination Routine . 160 

Chart 53. Disposition and 
Unallocation Subroutine — Entry From 

Job Termination Routine . 161 

Chart 54. 18K Configuration Load 

Module Control Flow 162 

Chart 55. 44K Configuration Load 

Module Control Flow 163 

Chart 56. 10 OK Configuration Load 

Module Control Flow 164 



Summary of Major Changes— Release 19 



Item 


Description 


Areas Affected 


Write-to-Programmer 


A facility added to WTO and 


Charts, pages 114-120 


(WTP) 


WTOR macro instruction 


Initiator-terminator , 




processing, allowing 


pages 38,58 




programmer messages to be 


Job processing, page 12 




written to SYSPRINT 


Load and assembly modules, 

pages 83-84 
Master scheduler, pages 

14, 17-18 
Tables and work areas, 

page 82 


In-Stream Procedure 


An added job control feature 


Assembly modules and 




that allows procedures to be 


control sections, 




placed in the job stream 


pages 100-102, 105 




rather than in a procedure 


Charts, page 127 




library. 


Interpreter, pages 19-22 
Load and assembly modules. 

pages 86, 89-90, 92, 

94-95, 98 
Tables and work areas, 

page 68 


Device name table, 


Discussion of the separate 


Assembly modules and 


Device mask table 


loading and deletion of 


control sections, 




these tables has been added 


pages 99-100, 103 
Initiator/terminator , 

pages 41 , 50 
Load and assembly modules, 

pages 84-85, 88, 90-91, 

94, 96-98 
Tables and work areas, 

page 66 


JCL Processing 


New key values have been 


Interpreter, pages 25-27, 




assigned in scan processing; 


30-33 




and the DD statement 






parameter disposition list 






has been updated. 





Summary of Major Changes - Release 19 7 



Introduction 



Job management (Chart 1) is the first and 
last portion of the control program that a 
job encounters. Its primary function is to 
prepare job steps for execution and, when 
they have been executed, to direct the dis- 
position of data sets used during execu- 
tion. Prior to step execution, job 
management: 

• Reads control statements from the input 
job stream. 

• Places information contained in the 
statements into a series of tables. 

• Analyzes input/output (I/O) 
requirements . 

• Assigns I/O devices. 

• Passes control to the job step. 
Following step execution, job management: 

• Releases main storage space occupied by 
the tables. 

• Frees I/O devices assigned to the step. 

• Disposes of data sets referred to or 
created during execution. 

Job management also performs all pro- 
cessing required for communication between 
the operator and the control program. 
Major components of job management are the 
job scheduler, which introduces each job 
step to System/360, and the master schedu- 
ler, which handles all operator-system- 
operator communication. 

Job Scheduler Functions 

The job scheduler includes two programs: 
the reader/interpreter and the initiator/ 
terminator. The interpreter is given con- 
trol whenever a job step is to be obtained 
from the input job stream and processed. 
It directs the reading of control state- 
ments and from them constructs: 



• Job file control blocks (JFCB) (one for 
each DD statement) to describe the data 
sets to be used by the job. 

• Step input/output tables (SIOT) (one 
for each DD statement) to describe the 
I/O requirements of the job step. 

• Volume tables (VOLT) (one for each 
step) with an entry for each DD state- 
ment containing serial numbers of 
volumes to be used by the job step. 

• Data set name (DSNAME) tables (one for 
each step, with an entry for each DD 
statement) containing names of pre- 
viously defined data sets to be used by 
the job step. 

In addition to the above, the interpreter 
creates system message blocks, in which 
diagnostic messages to the programmer are 
stored before they are written onto the 
system output data set. 

After all control statements for a job 
have been processed, or when data is 
encountered in the input job stream, the 
interpreter gives control to the initiator/ 
terminator. The latter analyzes the I/O 
requirements of the job step and, upon con- 
sidering such factors as requests for spe- 
cific units, volumes, and channels and 
their current employment, it assigns de- 
vices in such a way as to achieve maximum 
overlap of I/O activity during step 
execution. 

When all devices requested for the step 
have been assigned, the initiator /termina- 
tor issues mounting messages (if any are 
required) and verifies for direct access 
requests that the operator has mounted 
volumes on the correct units. Control is 
then passed to the job step. When the step 
has been executed, control is given to the 
initiator /terminator, which performs data 
set dispositions and releases I/O 
resources. 



• A job control table (JCT) to describe 
the job. 

• A step control table (SCT) to describe 
the job step. 

• An account control table (ACT) to de- 
scribe accounting information related 
to the job. 



Master Scheduler Functions 

The routines of the master scheduler pro- 
cess any communication between the operator 
and the system. The master scheduler 
processes: 

• Operator commands, whether they are 
issued through the console or through 
the input job stream. 



Introduction 



Write-to-operator (WTO) and write-to- 
operator with reply (WTOR) macro 
instructions, either of which may 
involve write-to-programmer (WTP) . 

Interruptions caused when the INTERRUPT 
key is pressed. 



Job Processing 

Figure 1 shows the major components of job 
management and illustrates the general flow 
of control. 

Control is passed to job management 
whenever the supervisor finds that there 
are no program request blocks in the re- 
quest block queue. This can occur for two 
reasons: either the initial program load- 
ing (IPL) procedure has just been completed 
or a job step has just been executed. 



ENTRY TO JOB MANAGEMENT FOLLOWING INITIAL 
PROGRAM LOADING 

Following IPL, certain actions must be 
taken by the operator before job processing 
can begin. Therefore, control passes to 
the master scheduler, which issues a mes- 
sage to the operator instructing him to 
enter commands. These "initialization" 
commands include a SET command, a start 
writer (START WTR) command, and a start 
reader (START RDR) command. The last 
initialization command to be issued is a 
START command with no parameters; when this 
command is issued, control passes to the 
interpreter for control statement 
processing. 



ENTRY TO JOB MANAGEMENT FOLLOWING STEP 
EXECUTION 

Following step execution, control is routed 
to the step termination routine of the 
initiator/terminator. If the job had been 
completed, control is also passed to the 
job termination routine of the initiator/ 
terminator. Both routines are described 
under "Job and Step Termination . " 



CONTROL STATEMENT PROCESSING 

After completion of the processing that 
immediately follows IPL, or after termina- 
tion of a job or of a step containing data 
in the input job stream, control is passed 
to the interpreter. The interpreter reads 
and processes control statements until one 
of the following conditions is encountered: 

• A DD * or DD DATA statement. 

• Another JOB statement. 



• A null statement. 

• An end-of-data set (EOF) on the system 
input device. 

Meanwhile, if the operator has pressed 
the REQUEST key and has entered a request 
(REQ) command during execution of the job 
step or any of the above processing, the 
mas'ter scheduler sets a command-pending 
indicator in the nucleus during the ensuing 
interruption. The indicator is now checked 
and, if found to be on, control is passed 
to the master scheduler, which issues a 
message instructing the operator to enter 
commands, and then processes the commands. 



STEP INITIATION 

Control next passes to the initiator/ 
terminator, which examines I/O device 
requirements, assigns (allocates) I/O de- 
vices to the job step, issues mounting 
instructions, and verifies that direct 
access volumes have been mounted on the 
correct units. Finally, the initiator/ 
terminator passes control to the job step. 



JOB AND STEP TERMINATION 

When processing program execution is com- 
pleted, the supervisor, finding no program 
request blocks in its request block queue, 
passes control to the job management rou- 
tines. Entry is first made to the step 
termination routine. 

The step termination routine performs 
end-of-step housekeeping and passes control 
to the user's accounting routine, if one 
was provided. When the accounting routine 
has been executed, the supervisor returns 
control to the step termination routine. 
Control is then passed to the job termina- 
tion routine if there are no more steps in 
the job; to the interpreter if the next 
step of this job has not been read yet 
(i.e., the step just terminated had data in 
the input stream) ; or to the step initia- 
tion routine if the next step of this job 
has been read. 

The job termination routine performs 
end-of-job housekeeping. It exits to the 
usejr's accounting routine, if one was pro- 
vided. After the accounting routine is 
executed, the supervisor returns control to 
the job termination routine, which passes 
control to the interpreter. 



OPERATOR-SYSTEM COMMUNICATION PROCESSING 

The routines that handle operator- system 
communication are contained in the master 
scheduler. Communication may take one of 
two forms : commands , which allow the 



10 



MASTER 
SCHEDULER 


READER/ 
INTERPRETER 


INITIATOR/ 
TERMINATOR 






B3 






B4 
Entry j 






C2 




From NIP 
(After IPL) 

u C3 


From Supervisor 
(After Step 
Execution) 

v C4 




Process 

Initialization 

Commands 






Initialize 

Main 

Storage 






Do Post-Step 
Housekeeping, 
Execute User's 
Accounting 
Routine 


















D3 






" 










Open 

System 

Devices 




^•"*\D4 

<S Last ^S. 

<^ Step Of J> 
\^ Job s' 


No 


























Yes 
V E4 








Do Post -Job 
Housekeeping, 
Execute User's 
Accounting 
Routine 










' 


F3 












Read And Process 
Job Control 
Statements 








G2 




Yes 


' 


' 






Request And 

Process 

Commands 




>/\G3 

y^ Command ^s. 
*V. Pending >r 
















No 










} 


f H4 










Initialize Tables 
For Step, Allocate 
I/O Devices 






1 


r J4 




C - ) 




















To Processing 
Program 







Figure 1. Job Management Control Flow 



Introduction 11 



operator to change the status of the system 
or of a job or job step; and the WTO or 
WTOR macro instructions, which allow pro- 
cessing programs or system components to 
issue messages to the operator through the 
console output device, or to the programmer 
through the system message class output 
device when the write-to-programmer facili- 
ty is invoked. The master scheduler also 
switches functions from the primary console 
device to an alternate console device when 
the INTERRUPT key is depressed. 









Supervisor 


Operator Presses 


Identifies 

Type of 

Interruption 


REQUEST Key 


Master Scheduler 






Requests 
Asynchronous 
Exit Processing 






Dispatches 

the 

Request 




Issues Message 

Requesting 

a Command 











Command Process ing 

Commands may oe issued by the operator in 
two ways: he may insert command statements 
between job steps in the input job stream, 
or he may issue commands through the con- 
sole input device. Commands encountered in 
the input job stream cause control to be 
passed to the master scheduler, which pro- 
cesses them. Before entering commands 
through the console, however, the operator 
must press the REQUEST key to cause an 
attention interruption. Figure 2 shows the 
actions taken after the key is pressed. 



Operator Enters 



Command 



Processes 
Command 



Returns Control 

to Point 
of Interruption 



Figure 2. Attention Interruption Process- 
ing Flow 



WTO/ WTOR Macro Instruction Processing 

Whenever the WTO or WTOR macro instruction 
is issued, an SVC interruption occurs. 
(See Figure 3.) 



SUPERVISOR 





System Component or P 


ocessing Program 














Identifies type of 




issues WTO/WTOR macro instruction 




Interruption 
















MASTER SCHEDJLER 






WTO 


1 WTOR 






Coded 
WTO or 
Uncoded 


' 




Coded 

WTP 

Only 


' 




Coded 
WTP/ 
WTO 


Coded 
| WTPOnlyor 
WTP/WTOR - 


' 




Coded 
WTOR or 
Uncoded ^r 






Writes Message to 
Console Output 
Device 




Writes Message to 
System Message 
Class Data Set 




Writes Message to 
Console Output 
Device 




Writes Message to 
System Message 
Class Data Set 




Writes Message to 
Console, Waits for 
Reply 


















' 


' 




' 


' 










' 


' 


' 


Writes Message to 
System Message 
Class Data Set 




Writes Message to 
Console, Waits for 
Reply 




' 


' 


' 




' 


' 


} 


Routing Code for WTP is 11 ; any other 
code denotes WTO/WTOR 






SUPERVISOR 








Returns Control to 


















Point of 
tion 


nrerrup- 





• Figure 3. WTO/WTOR Macro Instruction Processing Flow 



12 



E xternal Interruption Processing 



LOAD MODULES 



When the operator presses the INTERRUPT 
key, an external interruption occurs, fol- 
lowing which the master scheduler switches 
functions from the primary to the alternate 
console I/O device. (See Figure 4.) 









Supervisor 


Operator Presses 


Identifies 

Type of 

Interruption, 

Posts to 

M/S ECB 


INTERRUPT Key 


Master Scheduler 






Switches from 

Primary to 

Alternate Console 






Returns Control 

to Point 
of Interruption 









Most job management routines exist as a 
series of load modules that reside in the 
link library (SYS1.LINKLIB) . The excep- 
tions are the interruption-handling rou- 
tines of the master scheduler, which reside 
in the nucleus, and the master command EXCP 
routine which is in the SVC library (SYS1. 
SVCLIB) . Appendix C contains a list of the 
routines that make up each job management 
load module. 



Figure 4. External Interruption Process- 
ing flow 



Introduction 13 



Master Scheduler 



The master scheduler (Chart 2) processes 
all operator commands and messages directed 
to the operator through use of the WTO and 
WTOR macro instructions. It also performs 
console switching when the secondary con- 
sole is to be used in place of the primary 
console. 

The five major routines of the master 
scheduler are: 

• Console interrupt routine , which pro- 
vides the supervisor with the informa- 
tion necessary to queue a request for 
processing an attention interruption. 

• M aster command EXCP routine , which 
reads commands from the console input 
device and processes all commands 
except SET, START RDR, and START WTR. 

• Master command routine , which analyzes 
command verbs and routes control to 
appropriate command execution routines. 

• Wr ite- t o-operator routine , which pro- 
cesses messages to the operator and/or 
the programmer, and all operator 
replies to these messages. 

• Externa l inte rrup t routine , which 
switches to the alternate console 
device when an external interruption 
occurs. 



Master Scheduler Control Flow 

Commands are issued through either the con- 
sole I/O device or the input reader. (See 
Figure 5 . ) Before entering commands 
through the console I/O device, the opera- 
tor must cause an I/O interruption by 
pressing the REQUEST key. When he does, 
control is given to the supervisor. The 
supervisor determines that an I/O interrup- 
tion has occurred and passes control to the 
I/O supervisor. The I/O supervisor deter- 
mines that an attention interruption has 
occurred and passes control to the master 
scheduler console interrupt routine. 



The console interrupt routine resides in 
the nucleus. It passes to the supervisor 
the address of an interruption queue ele- 
ment to be added to an asynchronous exit 
queue. The interruption queue element con- 
tains the address of an interruption re- 
quest block that points to the master 
scheduler interrupt request block routine. 



Control is passed to the interrupt request 
block routine when the request is honored 
£>y the supervisor. A description of the 
asynchronous exit queue and the manner in 
which it is used is contained in the publi- 
cation IBM System/360 Operating System; 
Fixed-Task Supervisor, Program Logic Manu- 
al , GY28-6612. The format of the master 
scheduler interruption queue element is 
given in the section entitled "Console 
Interrupt Routine." 

The interrupt request block routine 
causes the master command EXCP routine to 
be .orought into the supervisor call (SVC) 
transient area of the nucleus, where con- 
trol is passed to it. 

The master command EXCP routine uses an 
EXCP macro instruction to read the command. 
(The PROCEED light on the 1052 Printer- 
Keyboard is turned on at this time.) £,ight 
commands, the REg, START (blank), CANCEL, 
DISPLAY, MOUNT, STOP, UNLOAD, and VARY coir- 
manis, are always accepted and processed. 
All other commands are ignored (control is 
returned to the supervisor) if issued at 
any time other than in response to a mes- 
saqe issued by the master command routine. 
If the command is acceptable, it is moved 
from the buffer into which it was read to a 
local buffer, and control is passed to the 
master command routine. 

The master command routine analyzes com- 
mands and routes control to appropriate 
command execution routines. If a command 
is issued through the input job stream, 
control is passed directly to the master 
command routine by the interpreter. When 
all commands have been entered and pro- 
cessed, control returns to the interpreter. 

The write-to-operator routine is entered 
from the SVC handler when a WTO or WTOR 
macro instruction is issued. When either 
macro instruction is issued, an SVC inter- 
ruption occurs and the write-to-operator 
routine is brought into the SVC transient 
area of the nucleus. Basically, the write- 
to-operator routine uses an EXCP macro 
instruction to write the message on the 
console output device and, if a reply is 
expected, to read the reply, which is 
placed into an area designated by the re- 
quester. Either WTO or WTOR may contain 
parameters which will result in the message 
being written to the programmer on the sys- 
teir message class data set, with or without 
a write to the console, depending upon the 
coding. (See Figure 3.) Control is 
returned to the supervisor. 



14 



The external interrupt routine assigns 
the functions performed by the primary con- 
sole device to the alternate console 
device. When the operator presses the 
INTERRUPT key on the console, an external 
interruption occurs and control is given to 
the supervisor, which identifies the inter- 
ruption and passes control to the external 



interrupt routine. The external interrupt 
routine then switches consoles and returns 
control to the supervisor. Console func- 
tions may later be reassigned to the pri- 
mary console device if the operator causes 
another external interruption (the external 
interrupt routine will again switch 
functions) . 



Attention 
Interruption 



I/O Supervisor 



Console Interrupt 
Routine 



c 



Interrupt Request 
Block Routine 






«j 



► 



r' 



5 



i 



Supervisor 



1 

i i 



I i 

+ I 



Program Fetch 



Nucleus 
Transient Area 



Master Command 
EXCP Routine 



Commands 

CANCEL 

DISPLAY 

MOUNT 

REQ 

START (blank) 

STOP 

UNLOAD 

VARY 



Reader/ Interpreter 
Control Routine 



r 



— > 



r" 



Master Command 
Routine 



Commands 



SET 
START RDR 
START WTR 



Fault Subroutine 



(Message Processor) 



Wri te- to- Opera tor 

Routine, REPLY 

Command 



Figure 5. Master Scheduler - Command Processing Network 



Master Scheduler 15 



Console Interrupt Routine 



The console interrupt routine (Chart 3) 
provides the supervisor with the address of 
the routine to be given control when the 
supervisor processes an attention interrup- 
tion. The console interrupt routine is 
part of the nucleus and is entered from the 
I/O supervisor each time an attention 
interruption occurs. 

Upon entry to the console interrupt rou- 
tine, the console flag switch is checked. 
If this switch is on, either the master 
command routine or the console interrupt 
routine is processing a prior request, and 
a RETURN is made to the I/O supervisor. 

When an interruption is not being pro- 
cessed by either routine, the console flag 
switch is turned on, the address of the 
master scheduler interruption queue element 
is placed into general register 1, and con- 
trol is passed to the supervisor. The 
interruption queue element is shown in 
Figure 6 . 



< — 4 Bytes — > 

r 1 

| Link | 
j. __ H 

| Parameter J 

i- ^ 

|IRB address | 

I- i 

|TCB address | 

l J 

Legend 



Link 

used by the supervisor to link mem- 
bers of the queue. 

Parameter 

contains the address of the interrupt 
request block routine. 

IRB address 

address of the interruption request 
block . 

TCB address 

address of the task control block. 

Figure 6. Master Scheduler Interruption 
Queue Element 

The interruption request block contains 
the address of the interrupt request block 
(IRB) routine to which control is passed by 
the supervisor when it dispatches the re- 
quest. The IRB routine uses an SVC 34 
instruction to cause the master command 
EXCP routine to be brought into the tran- 
sient area of the nucleus. 



Master Command EXCP Routine 

The master command EXCP routine (Chart 4) 
processes the CANCEL, DISPLAY, MOUNT, REQ, 
START (blank), STOP, UNLOAD, and VARY com- 
mands. It resides in SYSl.SVCLIB, and is 
brought into the transient area of the nuc- 
leus by the supervisor when an SVC 34 
instruction is issued by the master schedu- 
ler interrupt request block routine or the 
master command routine. 

If entry to this routine was from the 
interrupt request clock routine, an EXCP 
macro instruction is used to read the com- 
mand from the console and place it into the 
command buffer. If the command is one of 
the eight previously mentioned commands, it 
is processed. 

SET, START RDR, START WTR, and STOP WTR 
commands are ignored unless they were 
issued in response to a message from the 
master command routine. If so, control is 
passed to the master command routine, which 
processes them. 

Following return from the master command 
routine, or after execution of the REQ or 
START (blank) commands, the console flag 
switch is turned off to indicate to the 
console interrupt routine that another 
attention interruption can be processed. 



If entry to the master command EXCP rou- 
tine was from the master command routine, 
the command is available in a buffer 
(placed there by the master command rou- 
tine). The command is processed. 

The master command EXCP routine returns 
control to the supervisor. 



Meister Command Routine 

The master command routine (Chart 5) ana- 
lyzes command verbs and routes control to 
appropriate command execution routines. It 
also issues a message to the operator, 
informing him that commands will be 
accepted from the console. The master com- 
mand routine is brought into main storage 
and entered when: 

• The interpreter encounters a command in 
the input job stream. 

• The interpreter is performing the 
initialization procedures that follow 
IPL. 

• The interpreter finds the command pend- 
ing switch on. (The command pending 
switch is turned on by the routine that 
processes the REQ command.) 



16 



• The interpreter encounters an end-of- 
data set condition in the input job 
stream, indicating the end of a job 
step or job. Control is pcissed to the 
master command routine after the job 
step has been processed. 

Upon entry, general register is 
examined. If it contains zeros, entry was 
made because the interpreter encountered a 
command in the input job stream. The com- 
mand is moved to the master command routine 
buffer and is written out on the console 
output device for the operator's records. 
The command verb is then cinalyzed, and if 
it is a SET, START RDR, START WTR, or STOP 
WTR command, control is peissed to an appro- 
priate command execution routine. Other- 
wise, an SVC 34 instruction is used to pass 
control to the master command EXCP routine. 

If general register does not contain 
zeros upon entry to the metster command rou- 
tine, the IPL pending, new reader pending, 
and new writer pending switches are 
checked. If any of these switches are on, 
the command pending switch is turned on and 
a message is issued requesting the operator 
to enter commands. Control is then passed 
to the initialization command routine, 
which provides certain commands, specified 
by the installation during system genera- 
tion (SYSGEN), to relieve the operator of 
entering initialization commands. Each of 
these commands, if there are any, is moved 
to the master command routine buffer, writ- 
ten on the console output device for the 
operator's records, and executed. 

If general register does not contain 
zeros and none of the previously mentioned 
pending switches are on, entry to this rou- 
tine was made because the interpreter found 
the command pending switch on, or encoun- 
tered an end-of-data set condition in the 
input job stream. A message is issued 
requesting commands from the operator. 
After the operator has issued commands and 
they have been processed, control is 
returned to the interpreter. 



Write-To-Operator Routine 



When a WTO or WTOR macro instruction is 
issued, the write-to- operator routine 
(Chart 6) gains control by means of an SVC 
35 interruption. The routine searches for 
routing codes specified as values of the 
ROUTCDE= parameter of WTO/WTOR. If routing 
code 11, assigned to write-to-programmer 
messages, is present, the message will be 
written on the system message class data 
set in SYS1.SYSJ0BQE. If, for a WTO macro 
instruction, it is desired that the message 
also be written to the console output 
device, an additional routing code (any 



other than 11) must be present. For a WTOR 
macro instruction, the message goes to the 
console whether or not an additional rout- 
ing code is found. 

If the message does not carry the 
assigned WTP routing code, either form of 
the macro instruction writes the message to 
the console device and immediately returns 
control to the supervisor. Processing is 
resumed at the point of interruption (with 
a WAIT macro instruction if an operator's 
reply is to be entered) . 

If the WTP code is present in the mes- 
sage, however, control is transferred to 
write-to-programmer processing under the 
following conditions: 

• A WTO macro instruction containing both 
WTO and WTP routing codes will write 
the message to the console before 
transferring control to WTP. 

• A WTO macro instruction containing only 
the WTP routing code will transfer con- 
trol to WTP but will not write the mes- 
sage to the console. 

• A WTOR macro instruction, regardless of 
routing code content, transfers control 
to WTP before writing the message to 
the console. 



WTP messages may originate both in sys- 
tem components and in processing programs. 
The operating system uses WTP to provide 
the programmer with dynamic descriptions in 
the event of abnormal occurrences during 
execution of a processing program. The 
facility is used by processing programs to 
write a limited number of messages to the 
system message class output device when 
SYSOUT has not been specified in the JCL 
statements . 

The limit to the number of WTP messages 
to be written to the message queue in a 
given job (defined in the JOBQWTP= parame- 
ter of the SCHEDULR macro instruction at 
SYSGEN time) is resident in the nucleus. 
The maximum is twenty messages; the default 
value assigned when the parameter is 
omitted is two. Each time WTP prepares to 
process a new message, a check is made to 
ensure that the limit has not been 
exceeded. If it has not, WTP utilizes the 
transient queue manager (SVC 90) to read 
and write messages and to assign system 
message blocks (SMBs) . 

The actual number of messages passed to 
the queue may well be greater than the SMB 
count maintained by WTP. Message queue 
record size is 176 bytes, of which 15 bytes 
are reserved for control information, leav- 
ing 161 bytes to contain message text. 



Master Scheduler 17 



However, the maximum allowable text length 
is 126 bytes. A full-length message would 
therefore leave a number of unused bytes in 
each record. To make maximum use of the 
available storage, WTP will, within a given 
job step, fit more than one message into a 
gueue record when possible. For example, 
two 80 -byte or three 5 3 -byte messages can 
be placed into a single message queue 
record. 

WTP Error Handling 



During initiation of the first job step, 
WTP reserves two independent SMBs for its 
use in the event of error. Possible errors 
and the mariner in which they are resolved 
are shown here: 

Messages Exceed Limit : WTP uses one of 
its reserve SMBs to write an explanatory 
message on the system message class data 
set. All processing program WTP messages 
for the remainder of the job (including the 
one which initiated the condition, if such 
was the case) are ignored. From one to 
three additional system messages, including 
the possible error- initiating record, can 
be sucessfully processed (depending on 
length) through use of the reserved SMBs. 
Any in excess of the reserve storage capa- 
city are lost. 

In put/Output Error : When the transient 
queue manager is unsuccessful in a read or 
write operation when attempting to place a 
programmer message on the queue, WTP writes 
an explanatory message, followed by the 
unprocessed programmer message, on the con- 
sole output device. Once this error has 
occurred, subsequent WTP messages within 
the job st«sp are suppressed. 

N o Available SMBs : When the volume of 
normal (as opposed to WTP) system messages 
is so great that no more system message 
blocks are available, even though WTP has 
not used the full number assigned to its 
programmer messages, an explanation is 
written both to the message class data set 
(through use of the reserve SMBs) and to 



the console. Again, from one to three sys- 
tem messages can be processed after this 
condition occurs. Problem program messages 
encountered thereafter are bypassed. 



WTP Control Transfer 



Control is transferred by WTP in the fol- 
lowing manner: 







■ T" 




|WTP entered | WTP 






| from 


| completed | 


Control passed to | 


u - - 


j. 


4-- 


_ _ j 


r 


T 


T 


1 


| WTO 


| Yes 

1 

1 




Supervisor for | 
return to point | 
of interruption | 


| WTO 


| NO 




WTO | 


| WTOR 


| Yes or 


No| 


WTOR | 











If return from WTP is made to WTO 
because of unsuccessful handling of the WTP 
message, an EXCP macro instruction is used 
to write the message on the console output 
device, and control is passed to the super- 
visor for return to the processing point 
where the interruption occurred. 

When it is WTOR which invoked WTP, 
return is made to WTOR regardless of WTP 
message completion. The message is written 
to the console output device. The supervi- 
sor then resumes control of processing. If 
a WAIT macro instruction is now encoun- 
tered, the system waits for the operator's 
reply, places it in the storage area desig- 
nated in the WTOR parameters, and posts the 
event control block (ECB) . 



External Interrupt Routine 

The external interrupt routine (Chart 13) 
switches to an alternate console device 
when the operator presses the INTERRUPT key 
on the console. This routine resides in 
the nucleus. 



18 



Interpreter 



The primary function of the interpreter 
(Chart 14) is to read job control state- 
ments, analyze their contents, and build 
tables that are used during initiation and 
execution of job steps. 



Control is passed to the interpreter 
following: 

• The IPL procedure. 

• Execution and termination of a job step 
that was followed by data in the input 
job stream. 

• Execution and termination of the last 
step of a job. 



In each case, the interpreter begins read- 
ing and processing control statements. 

The interpreter is a processing program 
that operates in the problem program mode 
with a protection key of zero. It is cap- 
able of taking information from an input 
stream and the procedure library, process- 
ing it, and storing it for convenient 
retrieval by other programs. It is used by 
the operating system to translate job pro- 
cessing information into convenient form 
for processing by the initiator /terminator. 



The private procedure library (SYS1. 
PROCLIB) is a partitioned data set. Each 
member (called a cataloged procedure) is a 
series of job control language (JCL) state- 
ments describing frequently executed series 
of job steps. 

An input stream is a sequential data set 
composed of JCL statements, operator com- 
mand statements, system input data, and, if 
desired, in-stream procedures (a series of 
non- cataloged JCL statements that describe 
frequently executed job steps) . PROC and 
PEND statements mark the beginning and end, 
respectively, of an in-stream procedure. 
For detailed information on preparing in- 
stream procedure statements, see IBM 
System/360 Operating S y stem: Job Control 
User's Guide . GC28-6703. 



Figure 7 shows the data flow in the in- 
terpreter. The interpreter is entered at 
the initialization routine, as a result of 
a START RDR command; the initialization 
routine stores the initializing parameters 
and opens the input stream and procedure 
library data sets, then passes control to 
the control routine. 

The control routine reads the input 
stream and procedure library records. It 
passes JCL statements to the JCL scan 
routine . 



Input Stream 



# 



Procedure 
Library 



3> 



Con tro I 
Routine 



Command 
Statements 



# 



Scan 
Dictionary 



Parameter 
Codes 




Command 
Routine 



Internal 
Text 



Job Stmt 
Parameters 



=> 



Exec Stmt 
Parameters 



=> 



DD Stmt 
Parameters 



=0 



Job Stmt 
Processor 


















Exec Stmt 
Processor 
















DD Stmt 
Processor 

















Figure 7. Interpreter Data Flow 



Interpreter 19 



The scan routine converts JCL statements 
into an internal text format, since a JCL 
statement in the input stream may invoke 
and modify cataloged or in-stream proce- 
dures, the scan routine accumulates a com- 
plete logical statement (which may include 
several records from the input stream and 
the procedure library) before further pro- 
cessing is performed. When it has con- 
verted the complete logical statement into 
internal text, it passes the text to the 
appropriate JCL statement processor 
routine. 



Input and Control Operations 



When the initialization is complete, con- 
trol is passed to the interpreter control 
routine (Chart 16) , which reads records 
from the input stream and procedure 
library, determines the record type and 
processing required, and either performs 
the processing or passes control to the 
appropriate processing routine. 



READING CONTROL STATEMENTS 



The processor rotitines build the tables 
for the job and write them into the queue 
data set. In addition, they create system 
message blocks as required and write them 
into the queue data set. 



Initializing the Interpreter 

The interpreter is entered at the initiali- 
zation routine, which consists of two 
modules: the initialization module 
(IEFVH1) and the open module (IEFVH2) . At 
entry, control passes to the initialization 
module, which obtains main storage for the 
interpreter work area (IWA), and for the 
local work area (LWA) . The IWA contains 
information that is shared by two or more 
of the interpreter routines, while the LWA 
is used individually by each major routine 
and contains only information that need not 
be preserved outside the routine. Through- 
out the use of the interpreter, register 12 
contains a pointer to the IWA; the IWA con- 
tains a pointer to the LWA. 



When the main storage for the work areas 
has been obtained, the initialization rou- 
tine obtains main storage for the input 
stream DCB and the procedure library DCB, 
then stores pointers to these areas in the 
IWA. 



The routine then issues a TTIMER macro 
instruction and combines the time with the 
reader number in the interpreter option 
list to create the base for any unique set 
names to be generated for this input 
stream. Next, it examines the PARM field 
of the code list. It extracts the option 
fields, and sets the corresponding switches 
and values in the IWA.. 



The initialization module finally passes 
control to the open module, which opens the 
input stream and procedure library data 
sets. The input stream data set is opened 
for QSAM; the procedure library is opened 
for BPAM. 



The interpreter control routine is 
entered at the interpreter get routine 
(module IEFVHA) . This routine uses the GET 
and READ macro instructions to obtain rec- 
ords from the input stream and procedure 
library, or the in-stream procedure buf- 
fers, respectively. Only one input source 
is read upon each entry to the routine, 
except when a blocked procedure library is 
specified. In this case, a block is read 
and a pointer is passed to the input source 
statement. Switches set in the verb iden- 
tification routine (module IEFVHCB) deter- 
mine which data set is read. 

When the record is in main storage, the 
gel; routine determines if it is a control 
record (// in positions 1 and 2). If a 
non-control record is encountered, control 
is passed to module IEFVHB. This module 
will cancel the job and print the message 
INPUT STREAM DATA FLUSHED. Then return is 
made to the get routine. 



END-OF-DATA AND NULL STATEMENTS 

The: physical end of an input stream is sig- 
nalled by an end-of-data indication from 
the computing system. A null statement is 
the: last statement in an input stream (or a 
job description) , and is also the last 
| statement in a cataloged procedure. 

An end-of-data condition causes control 
to be passed to the interpreter EODAD exit 
routine (module IEFVHAA) , which determines 
whether there is a job to be enqueued. If 
not, it passes control to the interpreter 
termination routine; if so, it constructs a 
null statement, and passes control to the 
continuation statement routine. 

The continuation check routine passes 
control to the verb identification routine, 
which determines that the statement is a 
null statement, and passes control to the 
null statement routine. 

The null statement routine (module 
IEFVHL) is given control by the vert) iden- 
tification routine whenever it encounters a 
null statement. The null statement routine 



20 



examines the conditions under which it was 
entered, and passes control as described 
below % 

• If the statement is continued, control 
is passed to the interpreter get rou- 
tine, so that the condition may be 
read. 

• If the null statement, represents the 
end of a procedure, but there are addi- 
tional input stream records to process, 
control is passed to the verb identifi- 
cation routine, to process the current 
record from the input stream. 

• If there are no more records to be pro- 
cessed in either the input stream or 
the procedure, control is passed to the 
job validity check routine, so that the 
last job can be enqueued. 

• If there are no more input stream rec- 
ords to process, but there are addi- 
tional records in the procedure, con- 
trol is passed to the router routine. 

When the last job has been enqueued, 
control is passed to the interpreter ter- 
mination routine. 



PROCESSING CONTROL STATEMENTS 

When a record containing the characters 
"//" in the first two positions is read, 
control is passed to the continuation check 
routine (module IEFVHC) . If the preceding 
record from the same input source contained 
a comma in its last non-blank position, the 
current record is expected to be a con- 
tinuation of the preceding statement. The 
continuation routine inspects the current 
record to determine whether it is blank in 
position 3, and not blank starting any 
place from position 4 through position 16, 
inclusive. If so, control is passed to the 
pre-scan preparation routine; if not, or if 
no continuation was expected, control is 
passed to the verb identification routine. 

The verb identification routine (module 
IEFVHCB) identifies the type of control 
statement that has been encountered, and 
processes it as follows: 

• If a PROC statement from the input 
stream is encountered, indicating the 
beginning of a set of in-stream proce- 
dure statements, the verb identifica- 
tion routine passes control to the in- 
stream procedure routines (see Chart 
19) . Upon initial entry, the syntax of 
the PROC verb is checked and a 352-byte 
work area is obtained. Of this, 176 
bytes are used for compression and 
expansion of the statements within pro- 
cedures, and the remaining 176 bytes 



for a procedure directory (see Figure 
38). A directory entry, containing the 
procedure's name and auxiliary storage 
address, is created for each in-stream 
procedure within a given job to a maxi- 
mum of fifteen. Any in excess of this 
limit causes the job to fail. 



The next JCL statement is read and, 
unless it is a JOB, PEND, DD *, or DD 
DATA statement, it is compressed 
(blanks are removed and a count field 
added) and placed in a buffer. If the 
job*s message level parameter stipu- 
lates the printing of statements, a job 
queue SMB is built. Printed listings 
of statements from in-stream procedures 
and those from cataloged procedures are 
differentiated by identifications of 
"++" rather than "XX" for JCL output 
statements and "+/" rather than "X/" 
for overridden parameters. 



Another statement is then read and the 
processing repeated. When the PEND 
statement, signaling the end of a given 
in-stream procedure, is read, its syn- 
tax is checked and control is trans- 
ferred to the get routine. 

If a DD * or DD DATA statement is read 
in the in-stream procedure routine, a 
bit is set to flush the job, as data is 
not allowed in such procedures. Con- 
trol is passed to the get routine. 

When a JOB statement is read within the 
in-stream procedure routine, control is 
immediately returned to the verb iden- 
tification routine. 

• If the statement identified by the verb 
identification routine is EXEC PROC, 
the in-stream procedure directory is 
searched. If an entry for the named 
procedure is found, the address of 
SYSl.PROCLIB , s access method is saved 
in the IWA while a pseudo access method 
is used to read the procedure from the 
job queue and to expand it to its ori- 
ginal form. Once expanded, the proce- 
dure is processed by the reader/ 
interpreter as if it had originated in 
SYS1.PR0CLIB. Switches are set enabl- 
ing the interpreter get routine to read 
a statement from the procedure library 
or the job queue, and control is passed 
to the router routine. 

• If the statement is a JOB, EXEC, or DD 
statement, control is passed to the 
router routine. 

• If the statement is a null statement, 
control is passed to the null statement 
routine. 



Interpreter 21 



• If the statement appears to have a 
valid format, yet does not have one of 
the five valid JCL statement operators 
(JOB, EXEC, PEND, PROC, and DD) , and is 
not a null statement, control is passed 
to the command routine. The command 
routine verifies the verb and calls the 
master command routine. 



PROCESSING JOB, EXEC, AND DD STATEMENTS 

when the verb identification routine deter- 
mines that the statement is a JOB, EXEC, or 
DD statement, it passes control to the 
router routine (module IEFVHE) , which de- 
termines whether there are tables from a 
previous step to be placed in the queue 
before the current statement can be 
processed. 

If the router is entered with an EXEC 
statement in the buffer, the tables 
describing the previous step must be placed 
in the job's queue entry; control is passed 
to the job and step enqueue routine. 



job are also placed in SMBs. If the JOB 
statement does not specify any of its 
optional parameters, the sysgen default 
options, placed in the IWA when the inter- 
preter is initialized, are used. The pre- 
scan preparation routine finally passes 
control to the JCL scan routine (module 
IEFVFA) , which converts statements to 
internal text, and passes them to the 
appropriate processor, so that the tables 
can be constructed. 



QUEUE ENTRY PROCESSING 

When the presence of a JOB or null state- 
ment in the input stream indicates that the 
input queue entry describing the previous 
job is to be enqueued, the job validity 
check routine is entered. The routine de- 
termines whether the job to be enqueued has 
any steps; if so, control is passed to the 
job and step enqueue routine. If not, the 
validity check routine constructs a dummy 
SCT and sets the job-failed bit on before 
passing control to the job and step enqueue 
routine. 



If the statement in the buffer is a JOB 
statement, the previous step is the last 
step of a job. The storage space used for 
in- stream procedure work and job queue rec- 
ord areas is freed. Control is passed to 
the validity check routine. 

If the statement in the buffer is a DD 
statement, or if it is an EXEC statement 
representing the first step in a job, or if 
it is a JOB statement representing the 
first job in the input stream, there are no 
tables to be written into the queue, and 
control is passed to the pre-scan prepara- 
tion routine. 

The pre-scan preparation routine (module 
IEFVHEB) is entered when the statement to 
be processed is a JOB, EXEC, or DD state- 
ment. If the statement is a JOB statement, 
it passes control to the queue manager 
interface routine, which uses the queue 
management assign and start routines to 
start an input queue entry with an assign- 
ment of five records. 



On the return, the pre-scan preparation 
routine starts the construction, in main 
storage, of the JCT and the SCT for the 
first step of the job, by inserting the 
queue addresses of the first two records 
assigned to the job's entry. 



The routine then uses the message writ- 
ing routine to copy the JOB statement into 
an SMB. If the JOB statement specifies 
MSGLEVEL=1, the other JCL statements in the 



The job and step enqueue routine (module 
IEFVHH) is entered from the router when the 
presence of an EXEC statement indicates 
that the tables representing the previous 
step are to be placed in the input queue, 
and from the job validity check routine 
(module IEFVHEC) when the presence of a JOB 
or null statement indicates that the step 
was the last step of a job. The job and 
step enqueue routine inspects switches in 
the IWA to determine which tables are to be 
plciced in the queue, then passes control to 
the: queue manager interface routine to have 
each table written to the queue by queue 
management . 



If the step whose tables are to be 
plciced in the queue is the last step in a 
job, a switch in the IWA indicates that the 
JCT is to be written. When the tables 
describing the step have been placed in the 
qu€;ue, the job and step enqueue routine 
instructs the queue manager interface rou- 
tine to have the JCT written by the queue 
manager. An exit is then taken to the 
interpreter-initiator interface module. 



If the step whose tables are to be 
placed in the queue has a DD * statement, 
the: same exit is taken to the interpreter- 
initiator interface module. 



Otherwise, control is passed to the pre- 
scan preparation routine, and the statement 
currently in the buffer is processed. 



22 



POST-PROCESSING ENTRY 

The control routine is reentered at the 
post-scan routine (module IEF^HF) from the 
JCL scan routine if a continuation state- 
ment is expected, if the statement scanned 
was an overriding statement, or if a JCL 
error was detected. It is entered from a 
statement processor routine when the pro- 
cessing of a statement is completed. The 
post- scan routine determines the conditions 
under which it was entered, then passes 
control to the appropriate control routine 
module : 

• If a continuation statement is 
expected, control is passed to the in- 
terpreter get routine to read the 
statement. 

• If an overriding statement has been 
processed by the JCL scan routine, the 
overridden statement must be scanned 



before the statement processor routine 
is entered. The overridden statement 
is in the buffer, and control is passed 
to the pre-scan preparation routine. 



If a JCL error was encountered, the 
job-failed bit has been set on. The 
remaining statements in the job (except 
for procedure library statements) will 
be processed by the interpreter, so 
that any other errors may be found; but 
the job will not be run. Control is 
passed to the interpreter get routine, 
and processing continues. 

If the statement has been successfully 
processed, control is passed to the in- 
terpreter get routine. 

If the statement processed was a DD * 
or DD DATA statement, control is passed 
to the job and step enqueue routine. 



Interpreter 23 



Scanning the JCL Statement 

The job control language scanning routine (module IEFVFA) converts a JCL 
record into a coded internal list (see Figure 8). When it has accumu- 
lated a complete JCL statement, (including continuations and overrides) 
it then passes the list to a statement processing routine. An example 
showing the scanning and encoding of a DD statement follows this 
section. 

Each statement is scanned from left to right. The scan routine re- 
cognizes keywords and positional parameters, and is able to identify the 
existence of a name field and one level of subparameters following a 
keyword. 



r t t t ■ t r t 

I I I Positional | | | Sub 

Key j Number j Length j Parameter j Count j Length | Parameter 

J. J. J. X_ . . J. -1 X -| 

Key is the one byte binary code that represents a keyword. 

Number is a one byte binary number that specifies the number of posi- 
tional parameters in the entry. Its high-order bit is always off. 

Length is a one byte number that specifies the length of the parameter] 
that follows it. Its high-order bit is always off. 

Positional Parameter contains the positional parameter. 

Count is a one byte binary number that specifies the number of sub- 
parameters in the entry. Its high-order bit is always on. 

Note : The format of a list entry is variable, depending on the pre- 
sence and number of positional parameters and subparameters . 

L ._ . - J 

Figure 8. Internal List Entry Format 

As the statement is examined, the name field, keywords, and position- 
al parameters are identified and looked up in the scan dictionary (see 
Figure 9) . For each keyword the scan dictionary entry contains the 
corresponding one-byte binary "key", and lists the keys of any mutually 
exclusive parameters (the DDNAME and DCB parameters, for example, are 
mutually exclusive) . The entry also lists the keys of any minor key- 
words associated with the keyword that the entry represents; SEP, for 
example, is a minor keyword of the UNIT parameter,, and is listed as a 
minor keyword in the UNIT entry of the scan dictionary. The list of 
mutually exclusive keys is used for error checking and the list of minor 
keys for overriding major keywords in a cataloged procedure. 



24 



J. X X X X .j 

Length of Entry is a one byte binary number that specifies the length. 



~ "" 


~ T - 




■ T " 












Length 


1 




1 




1 


Mutually 


1 




of 


I 


Keyword 


1 


Key 


1 


Exclusive 


1 


Overridden 


Entry 


1 
- X - 




1 
- X - 




1 
. x . 


Key 


1 
_ x . 


Key 



in bytes, of the scan dictionary entry (including the length of entry 
field) . 

Keywor d contains the keyword specified in this entry. 



Key is a one byte binary code that represents the keyword specified in 
this entry. 

Mutually Exclusive Key contains the key that represents a keyword that 



may not be used in a statement that contains the keyword specified in 
this entry. The high-order bit in this field is always off for DD 
keywords. For other keywords , the condition of this bit is 
unpredictable . 

Overridden Key contains the key that represents a minor keyword of the 



keyword specified in this entry. The high order bit in this field is 
always on. 

Note ; The format of a scan dictionary entry is variable, depending on 



presence and number of mutually exclusive and overridden keys . 
Figure 9. Scan Dictionary Entry Format 

When the correct scan dictionary entry has been found, the scan rou- 
tine determines whether the parameter has been encountered previously, 
or whether a mutually exclusive parameter has been encountered, by test- 
ing the appropriate bits in the duplicate table. 

The duplicate table is a 16-byte table that contains a bit for each 
key. The position of the bit in the table corresponds to the key; the 
eighth bit in the second byte corresponds to the key X'OF* (the DCB key- 
word in a DD statement) , the first bit in the fourth byte corresponds to 
the key X*18" (the DDNAME keyword in a DD statement), etc. 

When it makes an entry in the internal list, the scan routine turns 
on the bit that corresponds to the key it is processing. It also turns 
on the bits that correspond to any mutually exclusive keys, as defined 
in the scan dictionary entry. Thus, if a oit in the table is on, it 
means that the key, or a mutually exclusive key, has been encountered 
previously. 

This condition is an error (and the scan routine turns on the job- 
failure bit amd exits) unless the scan routine is processing the proce- 
dure library statement. During a procedure merge, the condition means 
that the field being processed was overridden, and the scan routine pro- 
ceeds to the next field. 

When the scan is complete, control is passed to the appropriate JCL 
statement processor routine. 

Example x 

The JCL scan routine encounters the following source statement. 

//SYSUT1 DD DSNAME=LINKEDIT.WORK,UNIT=190 

SPACE=(TRK, (30,10)),VOLUME=SER=111111 

Interpreter 25 



1. The name field (SYSUT1) is identified as such because of its posi- 
tion, and encoded as follows: 



r t — • t T 1 

I Key | Number | Length | Parameter | 

| |6E | 01 | 06 | E2 E8 E2 E4 E3 Fl | 

L J. . - X X J 



2. The DSNAME= field is found in the scan dictionary entry shown 
below: 

r r ■ ■ — t t 1 

|j || Mutually J 
| Length | Keyword j Key j Exclusive keys | 
j. x ___ + x T ^ 

I j OB | C4 E2 D5 CI D4 C5 7E j 4A j 49 | 43 j 

L X X X X J 

3. It is encoded and placed in the list as shown below: 

r t t ■ t 1 

I Key | Number | Length | Parameter | 

j. x _ + x 4 

I |4A | 01 j 0D j D3 C9 D5 D2 C5 C4 C9 E3 4B L6 D6 D9 D2 j 

L X X X J 

4. The UNIT= field is found in the scan dictionary entry shown below: 

r t • r r r t 1 

|| || Mutually | | | 

|| || Exclusive | Overridden j Overridden | 

| Length I Keyword | Key j Key | Key j Key | 

| | 0A | E4 D5 C9 E3 7E | 41 | 49 | CD | CE | 

L_- X . X - X X , X J 

5. It is encoded and placed in the list as shown below: 



r t r~ r 1 

| Key | Number | Length | Parameter | 

| | 41 | 01 | 03 | Fl F9 F0 | 
L X X X . J 

6. The SPACE= field is found in the dictionary entry shown below: 

r t t t 1 

|| || Mutually | 

| Length | Keyword j Key j Exclusive Keys j 

I | 0B | E2 D7 CI C3 C5 7E | 47 | 48 |4C j 49 | 

L L . X X X L J 

7. It is encoded and placed in the list as shown below: 

r T T ~T T T T T T 1 

| Key | Number | Length | Parameter | Count | Length | Parameter | Length | Parameter | 
| | 47 | 02 | 03 |E3 D9 D2 | 82 | 02 | F3 F0 | 02 | Fl F0 | 

L X X X X X _X X X J 



26 



8. The VOLUME= field is found in the dictionary entry shown below: 

r T T T T T 1 

| | j {Mutually J I j 

| | j j Exclusive! Overriden j Overriden J 
| Length | Keyword | Key | Keys I Key I Key | 
j. x X x T x + .j 

| | OD |E5 D6 D3 E4 D4 C5 7EJ43 j 49 j 4B j CF j DO j 
L X X X X X X J 

9. It is encoded and placed in the list as shown below: 

r t 1 

| Key | Number j 
j. x 1 

I | 43 | 00 | 

L X J 

Since there are no positional parameters associated with the VOLUME 
keyword, the number field is 00, and it terminates the entry. 

10. The serial number field (SER=) is found in the scan dictionary 
entry shown below: 

r t t T 1 

II || Mututally j 
| Length | Keyword j Key j Exclusive Key j 
l x x x ^ 

I | 07 | E2 C5 D9 7E | 4F | 50 | 

L X X X J 

11. It is encoded and placed in the list as shown below: 

r t t t 1 

I Key | Number | Length | Parameter | 

^ + x x ^ 

I I 4F I 01 I 06 I Fl Fl Fl Fl Fl Fl | 

L J X X J 

12. Since the serial number field is the last field in the statement, 
the list is closed with the entry: 

r 1 

I Key | 

. k 1 

I | FE | 
L J 

The scan routine then passes control to DD statement processor rou- 
tine (IEFVDA) . 



Interpreter 27 



Processing JCL Statements 



When a statement has been scanned, and its 
contents placed in an internal text buffer, 
tables must be built from the internal 
text. This function is performed by the 
JOB statement processor routine (module 
IEFVJA) , the EXEC statement processor rou- 
tine (module IEFVEA) , and the DD statement 
processor routine (module IEFVDA) . These 
three routines are similar in construction 
(see chart 18); each processor consists of 
a sinqle control section containing a head- 
er routine, a keyword routine for each key- 
word in the statement, and a cleanup 
routine . 

When a statement processor routine is 
first entered, the header routine performs 
initializing functions, which include 
clearing the storage area occupied by the 
tables to be created by the routine (except 
for fields filled in by previously executed 
routines), and initializing the local work 
area (LWA) . It then uses a BALR instruc- 
tion to pass control to the get parameter 
routine, which performs basic error check- 
ing of a parameter, then passes control to 
the appropriate keyword routine. 

Each keyword routine controls the pro- 
cessing of the positional parameters and 
subparameters associated with a given key- 
word. The routine is entered initially 
when the get parameter routine encounters 
its keyword, and again as each positional 
parameter and subparameter is found. In 
some cases, the reguired processing is done 
directly by the keyword routine; in most 
cases, however, the keyword routine passes 
control to the test and store routine, 
which processes the parameter in accordance 
with the description in the parameter 
descriptor table (PDT) and returns control 
to the keyword routine. Control is then 
passed to the get parameter routine for the 
next parameter. 

When the last parameter in the statement 
has been processed, or when the test and 
store routine or get parameter routine 
finds an error, control is passed to the 
cleanup portion of the JCL statement 
processor. 

Each cleanup routine uses the message 
routine to write any error messages to the 
programmer. In addition, the cleanup rou- 
tines perform the processing described 
below: 

• The JOB statement processor cleanup 
routine checks for the presence of pro- 
grammer name and account number, and 
uses the gueue manager interface rou- 
tine to write out the job account con- 
trol table (ACT) . 



If the EXEC statement specifies 
"PROC=", the execute statement proces- 
sor cleanup routine uses the gueue man- 
agement interface routine to write out 
the last override table; if the state- 
ment was in a procedure, the routine 
reads the appropriate override table 
into main storage, and stores overrid- 
ing information in the SCT. 

• The DD statement processor cleanup rou- 
tine sets initializing values in the 
JFCB, where no value has previously 
been set. It marks the disposition 
fields for implied dispositions, and 
sets bits to indicate whether the data 
set is public, private, temporary, or 
shareable. If the DSNAME keyword was 
omitted, or if its parameter is "& n , 
the routine generates a data set name. 
It uses the gueue manager interface 
routine to assign records in the gueue 
for the SIOT and JFCB (unless the 
DDNAME or SYSOUT keyword was used in 
the statement) , then writes the SIOT 
and JFCB into the assigned records. If 
the DDNAME keyword was used, the rec- 
ords have previously been assigned, and 
the JFCB and SIOT need only to be writ- 
ten out. If the SYSOUT keyword was 
used, the routine passes control to the 
interpreter system output routine. 

JOB, EXEC and DD statement parameter 
dispositions are shown in Figures 10, 11, 
and 12. 

If the system includes Main Storage 
Hierarchy Support, selective access is per- 
mitted either to hierarchy or to hierar- 
chy 1 portions of main storage. The inter- 
preter processes the HIARCHY subparameter 
of the DD statement DCB parameter. If Main 
Storage Hierarchy support is not included 
in the system, requests for storage within 
hierarchy 1 are treated exactly the same as 
normal requests for main storage. 

Waen a cleanup routine has completed its 
processing, it passes control to the inter- 
preter routine, at the post-scan routine. 

Recognizing Checkpoint Restart 

When a restart is to occur, the JOB state- 
ment processor routine (IEFVJA) recognizes 
the RESTART keyword. If the CHKID subpara- 
meter is present, the restart is a check- 
point restart, and CHKID is saved in the 
JCT. If the CHKID subparameter is not 
present, the restart is a step restart. 

During control statement processing, 
module IEFVHCB tests for the CHKID parame- 
ter in the JCT. When the parameter is 
present (checkpoint restart) , the pre-scan 
routine (IEFVHEB) initializes job step 
IEFDSDRP. 



28 



The execute card scan routine (IEFVEA) 
indicates which step will be the first to 
be executed in a restarted job. In the 
case of a checkpoint restart, IEFDSDRP will 
be the first step to be executed. In the 
case of a step restart, the step to be 
restarted will be the first to be executed. 



r 

| JOB Statement 

j Parameter 


T ~ 

| Table 


| Table Item 
1 

X -. — 


r ~ t 

| jobname J JCT 

j. _ x 

| ace ount number | ACT 


T 

| Jobname 

+ 

| Account number, 
| length of account 
j number 
X -. — 


j programmer* s 
j name 


T 

(ACT 
_i 


T 

| Programmer * s name 

1 
J. 


| TYPRUN 


1 — 

| Ignored 
j control 

L 


in primary 
program 


| PRTY 


T 

| Ignored 
j control 

L _ 


in primary 
program 


J COND 

| MSGLEVEL 


T 

| JCT 

J JCT 
_ i 


T~ 

|Code, operator 

j Message level 

x _, _ . 


| MSGCLASS 


T 

| Ignored 
| control 

L 


in primary 
program 


| REGION 


T 

| Ignored 
| control 

4- — 


in primary 
program 


| CLASS 


T 

| Unused 

L 




| ROLL 

L._ _ 


t 

| Unused 

X 





Figure 10. JOB Statement. Parameter 
Dispositions 



r t T" 

EXEC j | 
Statement j Table j 
Parameter) | 



Table Item 



stepname |SCT |stepname 



PGM 



| SCT | Programname 
X X 



| Cataloged control statements 
PROC j are interpreted and merged with 
| input statements . 



TIME j Ignored in the primary control 
j program 



COND | SCT jcode, operator, auxiliary 
j j storage address 
j jof referenced SCT 



PARM 


"-+ 

|SCT 

1 
- X 


_ + ___ 

| Initializing parameter 
lvalues 

-X — 


ACCT 


T 

| ACT 

- X 


T 

|Step accounting fields 
± 


REGION 


T 

| Ignored in primary 
| control program 
- X — 


DPRTY 


T 

j Unused 
_ x 


ROLL 


T 

| Unused 

_ X 



Figure 11. EXEC Statement Parameter 
Dispositions 



Interpreter 29 





| DD Statement 




Table 




1 Parameter 

i _ j 


Table 

U — — -I 


Item 

u _ J 


Bit(s) 

L_ _ 


r — 1 


r 1 


r 1 


r 


|AFF= 


SIOT 


SCTCSADD 






SIOT 


SCTSBYT2 





|* f DATA 


SIOT 


SCTUTYPE 






SIOT 


SCTSBYT1 


1 




SIOT 


SCTSDISP 


5 




SIOT 


SCTSBYT3 


7 




SCT 


SCTSTYPE 






JFCB 


JFCBTSDM 


2 




JFCB 


JFCBIND2 


1 




JFCB 


JFCBDSNlvi 




| COPIES= 


SIOT 


SIOTOUTC 




j DCB= 








| dsname 


SIOT 


SIOTDCBR 




| BFALN=D 


JFCB 


JFCBFALN 


6 


j BFALN=F 


JFCB 


JFCBFALN 


7 


| BFTEK=A 


JFCB 


JFCBFTEK 


1,2 


j BFTEK=B 


JFCB 


JFCBFTEK 





| BFTEK=D 


JFCB 


JFCBFTEK 


4 


j BFTEK=E 


JFCB 


JFCBFTEK 


3 


| BFTEK=R 


JFCB 


JFCBFTEK 


2 


j BFTEK=S 


JFCB 


JFCBFTEK 


1 


| BLKSIZE 


JFCB 


JFCBLKSI 




j BUFL 


JFCB 


JFCBUFL 




| BUFNO 


JFCB 


JFCBUFNO 




j BUFOFF 


JFCB 


JFCBUFOF 




| BUFRQ 


JFCB 


JFCBUFRQ 




| CODE==A 


JFCB 


JFCCODE 


5 


I CODE==B 


JFCB 


JFCCODE 


3 


j CODE=C 


JFCB 


JFCCODE 


4 


| CODE==F 


JFCB 


JFCCODE 


2 


j CODE==I 


JFCB 


JFCCODE 


1 


| CODE=N 


JFCB 


JFCCODE 





| CODE==T 


JFCB 


JFCCODE 


6 


| CPRI=E 


JFCB 


JFCCPRI 


6 


| CPRI=R 


JFCB 


JFCCPRI 


5 


j CPRI==S 


JFCB 


JFCCPRI 


7 


j CYLOFL 


JFCB 


JFCCYLOF 




j DBUFNO 


JFCB 


JFCDBUFN 




| DEN=0 


JFCB 


JFCDEN 


6,7 


j DEN=1 


JFCB 


JFCDEN 


1,6,7 


j DEN=2 


JFCB 


JFCDEN 


1,3,6,7 


| DEN=3 


JFCB 


JFCDEN 


0,1,6,7 


| DSORG=CQ 


JFCB 


JFCDSORG 


4 


j DSORG=CX 


JFCB 


JFCDSORG 


3 


| DSORG=DA 


JFCB 


JFCDSORG 


2 


| DSORG=DAU 


JFCB 


JFCDSORG 


2,7 


| DSORG=IS 


JFCB 


JFCDSORG 





j DSORG=ISU 


JFCB 


JFCDSORG 


0,7 


| DSORG=MQ 


JFCB 


JFCDSORG 


5 


| DSORG=PO 


JFCB 


JFCDSORG 


6 


j DSORG=POU 


JFCB 


JFCDSORG 


6,7 


j DSORG=PS 


JFCB 


JFCDSORG 


1 


| DSORG=PSU 


JFCB 


JFCDSORG 


1,7 


| EROPT=ABE 


JFCB 


JFCEROPT 


2 


| EROPT=ACC 


JFCB 


JFCEROPT 





| EROPT=CLE 


JFCB 


JFCEROPT 


4 


j EROPT=SKP 


JFCB 


JFCEROPT 


1 


| GDSORG 


JFCB 


JGDSORG1 





| GNCP 


JCFB 


JFCBFTEK 




| HIARCHY=0 


JFCB 


JFCBFTEK 


none 


| HIARCHY=1 


JFCB 


JFCBFTEK 


5 


j INTVL 


JFCB 


JFC INTVL 





L A X X J 

Figure 12. DD Statement Parameter Dispositions (Part 1 of 4) 



30 



| DD Statement 




Table 




| Parameter 


Table 


Item 


Bit(s) 


!. 

| KEYLEN 


^ 

JFCB 


H 

JFCKEYLE 





j LIMCT 


JFCB 


JFCLIMCT 




j LRECL 


JFCB 


JFCLRECL 




| MODE=C 


JFCB 


JFCMODE 





| MODE=E 


JFCB 


JFCMODE 


1 


j NCP 


JFCB 


JFCNCP 




| NTM 


JFCB 


JFCNTM 




j OPTCD=A 


JFCB 


JFCOPTCD 


4 


j OPTCD=B 


JFCB 


JFCOPTCD 


1 


j OPTCD=C 


JFCB 


JFCOPTCD 


2 


| OPTCD=E 


JFCB 


JFCOPTCD 


2 


j OPTCD=F 


JFCB 


JFCOPTCD 


3 


j OPTCD=H 


JFCB 


JFCOPTCD 


3 


j OPTCD=I 


JFCB 


JFCOPTCD 


3 


| OPTCD=L 


JFCB 


JFCOPTCD 


6 


j OPTCD=M 


JFCB 


JFCOPTCD 


2 


j OPTCD=0 


JFCB 


JFCOPTCD 


3 


j OPTCD=P 


JFCB 


JFCOPTCD 


2 


| OPTCD=Q 


JFCB 


JFCOPTCD 


4 


j OPTCD=R 


JFCB 


JFCOPTCD 


7 


J OPTCD=T 


JFCB 


JFCOPTCD 


6 


j OPTCD=U 


JFCB 


JFCOPTCD 


1 


| OPTCD=W 


JFCB 


JFCOPTCD 





j OPTCD=Y 


JFCB 


JFCOPTCD 


4 


j OPTCD=Z 


JFCB 


JFCOPTCD 


5 


| PRTSP=0 


JFCB 


JFCPRTSP 


7 


| PRTSP=1 


JFCB 


JFCPRTSP 


4,7 


j PRTSP=2 


JFCB 


JFCPRTSP 


3,7 


j PRTSP=3 


JFCB 


JFCPRTSP 


3,4,7 


| RECFM=A 


JFCB 


JFCRECFM 


5 


j RECFM=B 


JFCB 


JFCRECFM 


3 


j RECFM=D 


JFCB 


JFCRECFM 


2 


j RECFM=F 


JFCB 


JFCRECFM 





| RECFM=G 


JFCB 


JFCRECFM 


5 


j RECFM=K 


JFCB 


JFCRECFM 


7 


j RECFM=M 


JFCB 


JFCRECFM 


6 


j RECFM=R 


JFCB 


JFCRECFM 


6 


j RECFM=S 


JFCB 


JFCRECFM 


4 


| RECFM=T 


JFCB 


JFCRECFM 


2 


| RECFM=U 


JFCB 


JFCRECFM 


0,1 


j RECFM=V 


JFCB 


JFCRECFM 


1 


j RETPD 


DDWA 


DDETPD 




j RKP 


JFCB 


JFCRKP 




j SOfoA 


JFCB 


JFCSOWA 




J STACK 


JFCB 


JFCSTACK 


6,7 


j TRTCH=C 


JFCB 


JFCTRTCH 


3,6,7 


j TRTCH=E 


JFCB 


JFCTRTCH 


2,6,7 


| TRTCH=ET 


JFCB 


JFCTRTCH 


2,4,6,7 


j TRTCH=T 


JFCB 


JFCTRTCH 


2,3,4,6,7 


j TRTCH=TE 


JFCB 


JFCTRTCH 


2,4,6,7 


j DISP= 


JFCB 


JFC3IND2 




| CATLG 


SIOT 


SCTSDISP 


6 


j DELETE 


SIOT 


SCTSDISP 


5 


j KEEP 


SIOT 


SCTSDISP 


4 


| MOD 


JFCB 


JFCBIND2 







SIOT 


SCTSBYT3 


6 


| NEW 


JFCB 


JFCBIND2 


0,1 




SIOT 


SCTSBYT3 


5 


| OLD 


JFCB 


JFCBIND2 


1 




SIOT 


SCTSBYT3 


7 


| PASS 


SIOT 


SCTSDISP 


3 


j SHR,SiiARE 


JFCB 


JFCBIND2 


1,4 



L 



X J. JL J 



Figure 12. DD Statement Parameter Dispositions (Part 2 of 4) 



Interpreter 31 





| DD Statement 




Table 




j Parameter 


Taole 


Item 


Bit(s) 


i. _ + ^ 


h .| 


h __. 




SIOT 


SCTSBYT3 


7 


| UNCATLG 


SIOT 


SCTSDISP 


7 


j (conditional 








j disposition) 








j CATLG 


SIOT 


SIOTALTD 


6 


j DELETE 


SIOT 


SIOT ALT D 


5 


j KEEP 


SIOT 


SIOTALTD 


4 


| UNCATLG 


SIOT 


SIOTALTD 


7 


JDS NAME, D3N= 


SIOT 


SCTSBYT4 







JFCB 


JFCBDSNM 






JFCB 


JFCBELNJVj 






JFCB 


JFCBIND1 


6,7 




JFCB 


JFCBIND2 


7 


| DUMMY, DDNAME= 


SIOT 


SCTSBYT1 







JFCB 


JFCBDSNM 




| LABEL= 








| AL 


JFCB 


JFCBLTYP 


6 




SIOT 


SCTSBYT4 


3 


| AUL 


JFCB 


JFCBLTYP 


6 


| 


SIOT 


SCTSBYT4 


3 


| BLP 


JFCB 


JFCBLTYP 


3 


1 


SIOT 


SCTSBYT2 


4 


| data set 


JFCB 


JFCBFLSQ 




j sequence no. 








| EXPDT 


JFCB 


JFCBCRDT 






JFCB 


JFCBXPDT 




| IN 


JFCB 


JFCBMASK 
(byte 6) 





I NL 


JFCB 


JFCBLTYP 


7 




SIOT 


SCTSBYT2 


4 


| NSL 


JFCB 


JFCBLTYP 


5 




SIOT 


SCTSBYT2 


5 


| OUT 


JFCB 


JFCBMASK 
(byte 6) 


1 


| PASSWORD 


JFCB 


JFCBIND2 


2,3 


| RETPD 


JFCB 


JFCBCRDT 






JFCE 


JFCBXPDT 






DDWA 


DDETPD 




| SL 


JFCB 


JFCBLTYP 


6 


| SUL 


JFCB 


JFCBLTYP 


4 


1 OUTLIM= 


JFCB 


JFCOUTLI 




| PATTERN= 


SIOT 


SIOTOUTR 




|SEP= 


SIOT 


SCTCSADD 






SIOT 


SCTSBYT2 


1 


| SPACE= 








| ABSTR 


DDWA 


ABSTR Z 


7 


| ALX 


JFCB 


JFCBCTRI 


6 


j average record 


| JFCB 


JFCBCTRI 


1 


j length 










| JFCB 


JFCBDRLH 




| beginning address 


JFCB 


JFCBABST 




| CONTIG 


JFCB 


JFCBCTRI 


4 


| CYL 


JFCB 


JFCBCTRI 


0,1 


j directory quantity 


JFCB 


JFCBDQTY 




| MXIG 


JFCB 


JFCBCTRI 


5 


j primary quantity 


JFCB 


JFCBPQTY 




| RLSE 


JFCB 


JFCBIND1 


0,1 


| ROUND 


JFCB 


JFCBCTRI 


7 


j secondary quantity 


| JFCB 


JFCBSQTY 




j TRK 


| JFCB 


JFCBCTRI 





j SPLIT= 


SIOT 


SCTSBYT1 


2,3 


j average record 


1 JFCB 


JFCBCTRI 


1 



L . 



X J. J. 



J 



Figure 12. DD Statement Parameter Dispositions (Part 3 of 1) 



32 













| DD Statement 








Table 




| Parameter 




Table 




Item 


Bit(s) 


L . 


L 




i 


j 












1 


r 


| length 












j CYL 




JFCB 




JFCBCTRI 


0,1 


j directory quantity 




JFCB 




JFCBDQTY 




1 n 




JFCB 




JFCBSPTN 




| primary quantity 




JFCB 




JFCBPQTY 




| secondary quantity 




JFCB 




JFCBSQTY 




| SUBALLOC= 




SIOT 




SCTSBYT1 


4 


j average record 




JFCB 




JFCBCTRI 


1 


j length 












| CYL 




JFCB 




JFCBCTRI 


0,1 


j ddname 




SIOT 




SIOTVRSB 








SIOT 




SCTSBYT3 


3 


j directory quantity 




JFCB 




JFCBDQTY 




j primary quantity 




JFCB 




JFCBPQTY 




| secondary quantity 




JFCB 




JFCBSQTY 




| stepname . ddname 




SIOT 




SIOTVRSB 




j TRX 




JFCB 




JFCBCTRI 





j SYSOUT= 




JFCB 




JFCBDSNM 








JFCB 




JFCBTSDM 


2 






JFCB 




JFCBLTYP 


6 






JFCB 




JFCBVLCT 


7 






SIOT 




SCTSBYT3 


4 






SIOT 




SCTSBYT1 





j classname 




SIOT 




SCTOUTPN 




j form number 




SIOT 




SCTOUTNO 




J prog name 




SIOT 




SCTOUTNM 




| UCS= 












j FOLD 




JFCB 




JFCINTVL 


1 


| VERIFY 




JFCB 




JFCINTVL 


3 


| UNIT= 












| AFF= (minor) 




SIOT 




SCTUSADD 








SIOT 




SCTSBYT1 


6 


| DEFER 




SIOT 




SCTSBYT2 


6 


j n 




SIOT 




SCTNMEUT 




j name 




SIOT 




SCTUTYPE 




1 p 




SIOT 




SCTSBYT1 


5 


| POOL 




none 








j poolname 




SIOT 




SCTSPOOL 




| SEP= (minor) 




SIOT 




SCTUSADD 








SIOT 




SCTSBYT1 


7 


1 o 




SIOT 




SCTNMBUT 




1 1 




SIOT 




SCTNMBUT 




| VOLUME= 












j PRIVATE 




SIOT 




SCTSDISP 


2 


j RETAIN 




SIOT 




SCTSDISP 


1 


j SER= 




JFCB 

JFCB 

JFCB 

SCT 

SCT 

SIOT 

SIOT 

VOLT 




JFCBNVOL 
JFCBEXAD 
JFCBVOLS 
SCTVOLTB 
SCTVOLTL 
SCTVOLCT 
SCTVLTPR 
INDMVOLT 




J volume count 




JFCB 




JFCBVLCT 




j volume sequence no. 




JFCB 




JFCBVLSQ 




| REF= 




dsname 

SCT 

SCT 

SIOT 

SIOT 

SIOT 




INDMDSNT 
SCTADSTB 
SCTLDSTB 
SCTVLPTR 
SCTVOLCT 
SIOTVRSB 








SIOT 




SCTSBYT2 


2 






SIOT 




SCTSBYT3 






L X X X J 

Figure 12. DD statement Parameter Dispositions (Part 4 of 4) 



Interpreter 33 



Auxiliary Routines 



entry. Additional fields in the table 
allow basic error checking to be done. 



Daring the performance of the reading task, 
the interpreter routines must frequently 
perform functions common to several rou- 
tines. These common functions are per- 
formed by a set of auxiliary routines, 
which are described below; 

• The get parameter routine (module 
IEFVGK) is used by the statement pro- 
cessor routines. It searches for the 
next parameter in a statement, performs 
basic error checking, and passes con- 
trol to the proper keyword routine, 
with a pointer to the parameter. 

• The test and store routine (module 
IEFVGT) is used by the statement pro- 
cessor routines. It processes the par- 
ameter as described in the parameter 
descriptor table (PDT) and passes con- 
trol back to the keyword routine. 

• The dictionary entrance routine (module 
IEFVGI) is used by the statement pro- 
cessor routines. It makes entries for 
the dictionary used in refer-back 
processing. 

• The dictionary search routine is used 
by the statement processor routines. 
It searches the refer-back dictionary 
during refer- back processing. 

• The message routine (module IEFVGM) 
stores messages in system message 
blocks (SMBs) for transmittal to the 
programmer. 

• The queue manager interface routine 
(module IEFVHQ) is used by those inter- 
preter routines that reserve space, 
write records in, or read records from 
the queues. 



THE GET PARAMETER ROUTINE 

The get parameter routine (module IEFVGK) 
is an auxiliary routine used by the JCL 
statement processor routines to find the 
next parameter in a statement, perform 
basic error checking of that parameter, and 
find and pass control to the appropriate 
keyword routine with pointers to the para- 
meter and to the appropriate parameter 
descriptor table (PDT) entry. 

When the get parameter routine is ini- 
tially entered, the only non-zero portion 
of the auxiliary work area (AWA) is the 
address of the keyword branch table (KBT) . 
The KBT (Figure 13) is a table of offsets 
that allows the get parameter routine to 
determine the actual main storage address 
of the appropriate keyword routine and PDT 



When the get parameter routine is 
entered to find the first parameter in a 
new statement, it extracts the base key 
(the key number that represents JOB, EXEC, 
or DD) from the text buffer and stores it. 
The base key is the offset of the last 
entry in the table from the first entry. 
Whenever the routine is entered, it sub- 
tracts the current key from the base key, 
multiplies the result by 6 (the size of an 
entry) , and adds the product to the machine 
address of the first entry in the table. 
The result is the machine address of the 
KBT entry corresponding to the current 
keyword . 



r t 1 

| Max. Num. of Params | Subparam Check J 
^ x -i 

| Offset to Keyword Routine | 



H- — 

I 



Offset to PDT Entry 



Figure 13. Keyword Branch Table Entry 



The get parameter routine first finds 
the proper KBT entry, then determines 
whether the maximum number of parameters 
for the keyword has been exceeded, and 
stores the subparameter check byte in the 
AWA. Each bit in the subparameter check 
byte corresponds to a positional parameter; 
if the bit is on, it means that the corres- 
ponding parameter may have subparameters 
associated with it. For example, if the 
first positional parameter associated with 
a keyword were the only one that could con- 
sist of a subparameter list, the high-order 
bit in the field would be on. If the 
seventh and eighth positional parameters 
could have subparameters, the two low-order 
bits would be on. 

The two offset fields are used to com- 
pute the actual main storage address of the 
appropriate keyword routine and of the 
appropriate PDT entry; the positional para- 
meter length, the parameter length byte 
address (in the internal text buffer), and 
the PDT entry address are placed in general 
registers, and control is passed to the 
keyword routine. 

On subsequent entries to the routine, 
the pointers are updated so that they point 
to the next operand (positional parameter 
or subparameter) , and control is returned 
to the keyword routine at the instruction 
after the branch to the get parameter rou- 
tine. When the next keyword is encoun- 
tered, however, the branch table is again 
used, and control is passed to a new key- 
word routine. 



34 



THE TEST AND STORE ROUTINE 



The test and store routine (module IEFVGT) 
is an auxiliary routine used by the JCL 
routines to determine the processing 
required for a parameter (as described in 
the PDT), and to perform that processing. 
When processing of a keyword is complete, 
control is returned to the appropriate key- 
word routine. 



The parameter descriptor table (Figure 
14) included in each JCL processor 
describes the processing to be done for 
each parameter that may be found in the 
statement. There is an entry for each key- 
word, which begins with a field containing 
the length of the keyword entry. The key- 
word entry is made up of positional parame- 
ter entries describing the processing to be 
done on the positional parameters asso- 
ciated with the keyword. 



Keyword PDT Length 



(Precedes first param PDT lor a keyword) 



Parameter PDT Length 



Ctl Fid Lgth Compr- Lgth 



Information to be compared 



Control Information (15 bytes max) 



PDT for Required Fc 


rmat Parameters 




Parameter PDT Length 






4 
Ctl Fid Lgth 


4 
Zero 


Parameter Max Length 


8 




Control Information (15 bytes max) 







PDT for Variable Format Parameters 



Parameter PDT Length 



Zer 



PDT for No-Action Parameters 



Parameter PDT Length 






4 
Ctl Fid Lgth 


4 
Zero 


, 8 
Zero 




Control Information (15 bytes max) 





PDT for Unconditional Action Parameters 



4 
Function 


4 
Table 


8 1 

Offset within Table | 


Bit Pattern or 8 
Maximum Number 




Maximum Number 


8 1 

Maximum Number 



Control Information 



Figure 14. 



Parameter Descriptor Table 
(PDT) 



Each parameter entry contains two kinds 
of information. Length and error checking 
information is followed by control informa- 
tion, which describes the functions to be 
performed on the parameter, and the loca- 
tion in which the result is to be stored. 



The first byte in each parameter entry 
(the parameter PDT length field) contains 
the length of the entry; the first half of 
the second byte (the control field length 
field) contains the length of the control 
information. The format of the remainder 
of the entry depends on the type of parame- 
ter and on the functions to be performed. 
There are four types of parameters : 



• A required-format parameter is a known 
string of characters. The first posi- 
tional parameter following the DISP= 
keyword, for example, must be either 
"OLD", "NEW", "MOD", or "SHARE". In 
this case, since there are four possi- 
bilities, there are four parts to the 
entry; the test and store routine com- 
pares the parameter to the constant in 
each of the four parts, and performs 
the function specified in the control 
information field of the part in which 
it obtained an equal compare. 

• A variable-format parameter may be any 
string of characters up to a known 
maximum length. The ciassname parame- 
ter of the SYSOUT keyword is an 
example; since there are 36 system out- 
put class names permitted in the sys- 
tem, a series of comparisons would be 
unwieldy. The compare length byte in 
such an entry is zero; the third byte 
in the parameter entry specifies the 
maximum number of digits allowed. 

• A no-action parameter is one that 
refers the system to bit configurations 
established when the system is 
generated. These bits specify a 
default option that the system may use 
without taking action to reset any 
bits. For example, the applications 
programmer may omit the COND keyword, 
in which case the system uses the 
default option and makes no return code 
tests. 

• An unconditional-action parameter indi- 
cates that the presence of the parame- 
ter requires that the same functions be 
performed regardless of the form or 
contents of the parameter. When the 
SPACE keyword is encountered, for 
example, certain switches must be set, 
regardless of how much or what kind of 
space has been requested. 

The control information portion of a para- 
meter PDT entry defines the operations to 
be performed when the parameter is pro- 
cessed, specifies the location in which the 
results are to be stored, and may contain 
data to be used in the operation. The con- 
trol information portion may be up to 15 
bytes in length; it consists of the follow- 
ing fields: 



Interpreter 35 



• Function : The first four bits of a 
control information field contain a 
number from to 7, which specifies one 
of the following operations: 

• OR (Code 0) : A logical OR operation is 
performed, using the bit pattern field 
in the control information portion of 
the entry, against the bit pattern at 
the location specified by the table and 
offset fields. 

• CVB1 (Code 1) : A convert to binary 
operation is performed and a maximum 
value check is made. The converted 
information is stored (right justified) 
in the one-byte field specified by the 
table and offset fields, and compared 
against the maximum value, which is 
right- justified in the third byte of 
the control information part of this 
entry . 

• CVB2 (Code 2) : This operation is simi- 
lar to CVB1, except that the result is 
right- justified in a two-byte field, 
and the maximum value is found right- 
justified in the fourth byte of the 
control information portion of the 
entry. 

• CVB3 (Code 3) : This operation is simi- 
lar to the CVB1 and CVB2 operations, 
except that the result is right- 
justified in a three-byte field, and 
the maximum value is found in the fifth 
byte of the control information portion 
of the entry. 

• AND (Code 4) : A logical AND operation 
is performed, using the bit pattern 
field in the control information por- 
tion of the entry against the oit pat- 
tern at the location specified by the 
table and offset fields. 

• MVC (Code 5) : A move characters opera- 
tion is performed, using the parameter 
length specification in the internal 
text buffer. The parameter is moved to 
the location specified in the table and 
offset fields in the entry. 

• F irst Character Alpha Check and MVC 
( Code 6) : This function is similar to 
the MVC function, except that the first 
character of the parameter is inspected 
to determine that it is alphabetic. 

• A lpha/Numeric Check (Code 7) : A 
character (usually a one character par- 
ameter) in the text buffer is inspected 
to determine that it is alphabetic. 



• Table: 



The second four bits of the 



control information portion of a para- 
meter PDT entry contain a number 
between and 15 that specifies the 



table in which the result of the opera- 
tion is to be stored. 

Offset : The second byte of the control 
information of an entry contains the 
offset, from the beginning of the 
table, of the field in which the 
results of the operation are to be 
stored. 

Bit-pattern/Maximum Number : The third 
through fifth bytes of the control 
information portion of the entry are 
used for those operations that require 
data for logical or comparison func- 
tions. If the operation is AND or OR, 
the third byte contains the bit pat- 
tern. If the operation is a CV3 opera- 
tion, the third, fourth and fifth bytes 
contain the binary representation of 
the maximum value allowed for that 
parameter. 



THE DICTIONARY ENTRY ROUTINE 

The dictionary entry routine (module 
IEFVGI) is used by the EXEC statement pro- 
cessor routine and the DD statement proces- 
sor routines to place an entry in the 
refer-back dictionary. The dictionary is 
maintained in the 1WA; if the number of 
entries exceeds five, a copy of the dic- 
tionary is written out to the queue, a new 
dictionary is initialized in the IWA, and 
the new dictionary is chained to the pre- 
vious copy in the queue. 



THE DICTIONARY SEARCH ROUTINE 

The dictionary search routine (module 
IEFVGS) is used by the EXEC and DD state- 
ment processor routines to search the 
refer-back dictionary for the address of a 
previously defined SCT, SIOT, or JFCB. It 
returns control to the calling routine with 
a pointer to the required table. 



THE INTERPRETER MESSAGE ROUTINE 

The interpreter message routine (module 
IEFVGM) is used by the interpreter control 
routine and JCL statement processor rou- 
tines when a JCL statement or diagnostic 
message must be placed in an SMB, and to 
enqueue SMBs for each job. 



THE QUEUE MANAGER INTERFACE ROUTINE 

The queue manager interface routine (module 
IEFVHQ) is used by those interpreter rou- 
tines that need to assign space, and to 
read and write records in the queue. It 
provides a queue manager parameter area, 
and passes control to the queue manager to 



36 



perform the function specified by the call- 
ing routine. On the return from the queue 
manager, it resets the parameter area so 
that it specifies an assign and write 1 
record operation, and returns control to 
the caller. 



Interpreter Termination 

At end- of -data in the input stream, or when 
the interpreter determines that a START RDR 
command has been issued, control is passed 
to the interpreter termination routine 



(module 1EFVHN) . This routine obtains main 
storage for the interpreter entrance list 
(NED , stores a pointer to the command 
scheduling control block (CSCB), and if the 
input stream is an internal input stream it 
also stores a pointer to the queue manager 
parameter area and the JCT. If the input 
stream is on external storage, it closes 
the input stream data set. In either case, 
it closes the procedure library PDS, and 
releases the main storage obtained for the 
two DCBs, the IWA and the LWA. when pro- 
cessing is complete, it returns control to 
its caller. 



Interpreter 37 



Initiator/Terminator 



The initiator/terminator (Chart 14) ensures 
that all I/O resources needed by a job step 
are available before control is passed to 
the step. The initiator/ terminator ana- 
lyzes the I/O device requirements of job 
steps and allocates devices to them. If 
necessary, it issues mounting instructions 
and verifies that volumes were mounted on 
the correct units. 



Control is passed to the initiator/ 
terminator from: 

• The interpreter, when the interpreter 
encounters a second JOB statement, a DD 
*, DD DATA, or null statement, or an 
EOF in the input job stream. 

• The supervisor, following step 
execution. 



The initiator/terminator passes control to: 

• The job step, when all I/O devices 
needed by the step have been assigned 
and the step is ready for execution. 

• The interpreter, when termination pro- 
cedures have been completed for a step 
or j ob . 



Step initiation routines open the job 
library or step library data set if the 
JOBLIB or STEPLIB DD statements are pres- 
ent. Also, if the step being initiated 
consists of a program that was created by a 
previous step (commonly known as "compile, 
load, and go"), a step initiation routine 
opens the data set containing the program. 
Before passing control to the job step, a 
| step initiation routine takes several pre- 
paratory steps. It loads control informa- 
tion that followed the PARM keyword of the 
EXEC: statement into main storage. It also 
uses the table store subroutine to store 
all tables associated with the job step, 
thereby protecting them for use by the ter- 
mincition routines. It initializes the 
write-to-programmer control block (WTPCB) 
(see Figure 46) for the processing program. 
If the initiation is for the first step of 
the job, two SYS1.SYSJ0BQE SMBs are 
reserved for use in processing WTP error 
conditions. If an automatic checkpoint 
restart is in progress, the WTP messages 
previously written to the message queue are 
retrieved, using information from the step 
control table (see Figure 43) to rebuild 
the WTPCB. The information, gleaned from 
the WTPCRSMB and WTPCRCNT fields of the 
WTPCB, is stored in the SCT prior to ter- 
mination of the original job step. 



Initiator/terminator routines are 
arranged into four groupings: 

• Initiator control 

• Allocation and setup 

• Step initiation 

• Termination 

Initiator control routines perform 
housekeeping functions, analyze condition 
codes specified by the programmer in the 
EXEC statement, and update JFCBs and other 
tables associated with the step. 

Allocation and setup routines analyze a 
step's I/O requirements (taking into con- 
sideration, for example, requests for abso- 
lute assignments and unit and volume 
affinity) . They then allocate devices and 
issue messages instructing the operator to 
mount required volumes. 



Termination routines are entered after 
each job step is executed. They supervise 
entry to the user's accounting routine (if 
one exists) and, upon return, dispose of 
data, sets referenced by the step during 
execution and release devices allocated to 
the step. 



Information is passed between initiator/ 
terminator routines by means of the linkage 
control table (LCT) (see Figure 15). The 
LCT is built and initialized during IPL. 
It is stored before processing program 
execution and, following execution, is 
retrieved by initiator/terminator termina- 
tion! routines. The beginning address of 
the LCT is maintained in general register 
12 during execution of the initiator/ 
terminator. 



38 



Offset 

Hex Dec 




4 


4 


8 


8 


C 


12 


10 


16 


14 


20 


18 


24 


1C 


28 


20 


32 


24 


36 


28 


40 


2C 


44 


30 


48 


34 


52 


38 


56 



3C 60 



Length of LCT 



Address of I/O supervisor UCB lookup table 



Address of TCB 



Not used in the primary control program 



Main Storage Address of JCT 



Main Storage Address of SCT 



Auxiliary Storage Address of SCT 



Not used in the primary control program 



Error code 



Parameter 1 



Parameter 2 



Parameter 3 



Parameter 4 



Address of register save area 



Reserved 



JFCB hsk ! 
indicators 



Current 
step no. 



Action 
code 



Address of current system message block (SMB) 



Figure 15. Linkage Control Table 



Initiator Control 

Initiator control (Chart 22) performs cer- 
tain housekeeping functions for the 
initiator/terminator, and also checks EXEC 
statement condition codes (if any) . Condi- 
tion codes appearing in EXEC statements 
determine whether or not a job step is to 
be executed. 



Routines that comprise initiator control 
are: 

• System control routine , which is the 
entry point for the initiator/termina- 
tor. Control is passed to the initia- 
tor/terminator when a step is ready for 
initiation and also after one has been 
executed and terminated, if another 
step is to be initiated. Housekeeping 
is performed and control is passed to 
the execute statement conditional 
execution routine. 



• Execute statement conditional execution 
routine , which checks any dependencies 
encountered in EXEC statements. 

• JFCB housekeeping routines , which com- 
plete portions of JFCBs and SIOTs that 
describe the volumes to be used during 
step execution. These routines also 
construct a passed data set queue (PDQ) 
to describe data sets being passed and 
update the PDQ for data sets being 
received by the step being processed. 



SYSTEM CONTROL ROUTINE 

The system control routine (Chart 23) is 
entered from the interpreter when it com- 
pletes the processing of a step that was 
followed by data in the input job stream, 
or when it reads the last step of a job. 
It is also entered from the step termina- 
tion routine if additional steps remain to 
be initiated. 

Upon entry, the system control routine 
updates the step number in the LCT. Then, 
if the step is the first step of the job, 
its job name is placed into the selected 
job queue. (See Figure 16.) 



Jobname 



Cancel ECB 



Figure 16. Selected Job Queue 



If the step being processed is the first 
step of the job, and if a DISPLAY JOBNAMES 
command has been issued, the ViTO macro 
instruction is used to write the message: 

IEF401I jobname STARTED 

on the control output device. If the job 
being processed is restarting, the system 
control routine restores saved data from 
the CVT and sets the restart switches. 

In the case of a JCL error or an alloc- 
ate error in the first step, the VJTO macro 
instruction is used to write the message : 

IEF452I jobname JOB NOT RUN - JCL ERROR 

on the console output device. Control is 
then passed to the executed statement con- 
dition code routine. 



EXECUTE STATEMENT CONDITIONAL EXECUTION 
ROUTINE 

The execute statement conditional execution 
routine (module IEFVKIMP) checks the key- 
word COND parameter of the execute state- 
ment to determine whether or not the cur- 
rent step should be executed. 



Initiator/Terminator 39 



To determine when and if it should pass 
control to the JFCB housekeeping routines 
for step execution, the execute statement 
conditional execution routine (Chart 24) 
first determines that no abnormal termina- 
tions have occurred in the previous steps, 
then sees if either of the following condi- 
tions is also true: 

• The step is the first step of the job 
and the programmer did not specify the 
COND=ONLY parameter. 

• The programmer did not specify either 
any return code tests or the COND=ONLY 
parameter . 

Otherwise the routine then tests for 
abnormal terminations and for up to eight 
return codes from previous steps before it 
determines the proper disposition of the 
step from the coding of its execute state- 
ment and all the pertinent environmental 
factors. Figure 17 summarizes the condi- 
tions that can exist and, corresponding to 
each condition, whether or not the step 
will be executed. 





1 


2 


3 


4 


5 


6 


7 


8 


COND parameter omitted 


X 












X 


X 


COND= ONLY specified 




X 










COND= EVEN specified 






X 




X 








COND parameter satisfied by return codes 












X 






COND parameter NOT satisfied by return codes 








X 










Prior step abnormally terminated * 




X 


X 










X 


No previous abnormal terminations 


X 








X 




X 




Step will execute 


X 


X 


X 


X 


X 








Step will NOT execute 












X 


X 


X 



A special case of a previous abnormal termination is that indicated by a 
System 806 message code (problem program not found). 



Figure 17. Execute statement COND Parame- 
ter Options 

* A special case of a previous abnormal 
termination is that indicated by a System 
8 06 message code (problem program not 
found) . 



The execute statement conditional execu- 
tion routine first tests the job control 
table's abnormal termination indicator 
(JCTABEND bit in the JCT) to see whether 
one or more prior steps have terminated 
abnormally during execution of the problem 



program. If none have, the routine tests 
the; SCTONLY bit in the SCTABCND field of 
th€; current SCT to see whether the pro- 
grammer specified the COND=ONLY parameter. 
If he did, the routine writes a message to 
tht: system output device, and the job 
scheduler bypasses the step. (See column 7 
in the table.) However, if one or irore 
abnormal terminations have occurred, the 
routine tests the SCTONLY and SCTEVEN bits 
of the SCTABCND field to see whether the 
programmer specified either the COND=ONLY 
or the COND=EVEN parameters. If neither 
bit: is on, the job scheduler bypasses the 
step. (See column 8. These circumstances 
produce the default situation wherein a 
step whose execute statement does not spe- 
cify either the COND=ONLY or the COND=EVEN 
parameter is failed after one or more 
abnormal terminations in the job.) If 
either bit is on, however, the routine 
makes any return code tests specified in 
the COND parameter. The routine passes 
control directly to the JFCB housekeeping 
routines when the COND parameter has been 
omitted and no previous abnormal termina- 
tions have occurred. (See column 1.) 

When the programmer has specified return 
code tests, the execute statement condi- 
tional execution routine uses the gueue 
management read routine to read in the SCTs 
of the specified steps. (For this read 
operation the gueue manager uses TTRs saved 
in the current step at interpretation 
time.) The first return code that satis- 
fies a set of test conditions delineated by 
the COND parameter causes : 1) the routine 
to send a message to the system output 
device; and 2) the job scheduler to bypass 
the current step. (See column 6.) 



To cause the job scheduler to bypass 
this step (but not necessarily the succeed- 
ing steps of the job) , the execute state- 
ment conditional execution routine places a 
special error code into the LCTERROR field 
of the LCT and passes control to the step 
termination control routine. 



JFCB HOUSEKEEPING ROUTINES 

The JFCB housekeeping routines (Chart 25) 
complete volume information within certain 
tables, in preparation for their use by 
allocation routines. This information is 
generally the type that reguires reference 
to the catalog (use of the LOCATE and 
OBTAIN macro instructions) or to passed 
data sets. Tables in which entries are 
made include: 

•» Job file control block. 
■» Step input/output table. 
■» Step control table. 
•» Volume table. 



40 



If it is discovered as a result of a 
reference to the system catalog through the 
LOCATE macro instruction that the required 
control volume is not mounted, a new load 
module, IEFMCVOL, will be brought into main 
storage. This load module creates the 
tables required by the allocation routines 
to allocate a device for the required con- 
trol volume, and requests the operator to 
mount the volume before other requests for 
the step are satisfied. If the allocation 
for the control volume is successful, con- 
trol returns to the JFCB housekeeping rou- 
tine, where the LOCATE macro instruction is 
reissued with the control volume mounted. 



For passed data sets, a PDQ is con- 
structed and entries are made for the first 
occurrence of each data set being passed to 
a subsequent step. The existing data set 
queue entries are then updated when a data 
set is received from a previous step. 

The JFCB housekeeping routines include 
the following: 



When the data set reference is a data 
set name, the passed data set queue is 
examined and, if it contains an entry for 
the referenced data set, the SIOT and JFCB 
for that data set are placed into a main 
storage work area and are used to complete 
device and volume information for the sub- 
ject data set. 

If there is no entry for the referenced 
data set in the PDQ, a LOCATE macro 
instruction is issued to find that data set 
in the catalog. Its volume control block 
or data set pointer entry is then used to 
complete the volume and device information 
for the subject data set. 

When the data set reference is by ddname 
or stepname . ddname , a check is made to 
determine if the DD statement appeared in 
the step being processed. If so, the SIOT 
and JFCB associated with the referenced DD 
statement are placed into a main storage 
work area. These are used to complete the 
device and volume information of the sub- 
ject data set. 



JFCB housekeeping control routine. 
Allocate processing routine. 
Fetch DCB processing routine. 
GDG single processing routine. 
GDG all processing routine. 
Patterning DSCB processing routine. 
Error message processing routine. 



J FCB Housekeeping Control Routine 

The JFCB housekeeping control routine 
(Chart 26) determines what processing (if 
any) is required, and directs control to 
the first appropriate processing routine. 
Upon return of control, it redirects con- 
trol to the next required processing rou- 
tine. This routine places each SIOT for a 
job step into a main storage work area, 
examines it, and, depending on the type of 
information required, passes control to the 
processing routine which performs the 
actions necessary to retrieve the required 
information. 



If the DD statement appeared in a pre- 
vious step of the job being processed, the 
SIOT and JFCBs constructed by the last step 
to reference the data set are placed into a 
main storage work area and are used to com- 
plete the volume and device information of 
the subject data set. 

When a unit name is specified in the DD 
statement, the unit name is converted to 
unit type, through use of the device name 
table. This table is loaded from SYS1. 
LINKLIB and is deleted when unit name conv- 
ersion is complete. 



Fetch DCB Processing Routine 

The fetch DCB processing routine (Chart 29) 
completes volume and device information 
when the data set referred to contains a 
program that was created in a previous step 
and is to be executed as the current step. 



When all SIOTs for a job step have been 
examined, the JFCB housekeeping control 
routine passes control to the allocation 
and setup function of the initiator/termi- 
nator. 



A llocate Processing Routine 

The allocate processing routine (Chart 28) 
completes information about data sets which 
reference another data set by data set name 
(indicating a passed or cataloged data set) 
or by ddname or stepname . ddname (indicating 
a data set described in a previously pro- 
cessed DD statement) . 



GDG Single Processing Routine 

The GDG single processing routine (Chart 30) 
obtains the data set name of a generation 
data group (GDG) member and completes 
volume and device information entries for 
that member. 



GDG All Processing Routine 

The GDG all processing routine (Chart 31) 
builds an SIOT, JFCB, volume table entry, 
and PDQ entry for each GDG member when the 
entire generation data group is specified 
by the programmer. 



Initiator/Terminator 41 



Patterning DSCB Processing Routine 

The patterning DSCB processing routine 
(Chart 32) completes control information in 
a JFCB when a new data set is to be pat- 
terned after a previously cataloged data 
set. The volume control block or data set 
pointer entry, which contains the volume 
serial number of the volume that contains 
the data set, is placed into a main storage 
work area. Fields in the JFCB are checked 
for zeros. If a field contains zeros, the 
corresponding field from the DSC3 is moved 
into the JFCB. 



E rror Message Processing Routine 

The error message processing routine (Chart 
33) is entered and issues error messages 
whenever an error condition is encountered 
within a JFCB housekeeping routine. 



Allocation and Setup 

The allocation and setup function of the 
initiator/terminator (Chart 34) allocates 
I/O devices, issues any necessary mounting 
instructions to the operator, and ensures 
that enough I/O requirements have been 
satisfied to begin execution of a job step. 
The routines in the allocation and setup 
function are: 

• Allocation control routine , which per- 
forms housekeeping for the allocation 
and setup function by obtaining space 
for tables used during allocation. 

• Demand allocation routine , which con- 
structs the allocate tables and begins 
actual allocation by assigning devices 
to any data sets for which the pro- 
grammer requested specific devices. 

• Automatic volume recognition routine , 
(optional) which can determine that 
named volumes have been mounted on cer- 
tain devices and which allocates those 
devices to satisfy requests for the 
volumes. 

• Decision allocation routine , which per- 
forms allocation when a choice of de- 
vices is to be made. 

• TIOT construction routine , which builds 
a task input/output table (TIOT) that 
will be used by data management rou- 
tines during step execution. 

• External action routine , which issues 
mounting instructions, verifies that 
volumes are mounted on the correct 
units, and unloads incorrectly mounted 
volumes . 



Space request routine , which obtains, 
from the direct access device space 
management (DADSM) routines, space on 
direct access devices, and which satis- 
fies requests for data set space. 



TIOT compression routine , which compre- 
sses the TIOT to its final size, 
updates JFCBs with scratch information 
whenever necessary, places the alloca- 
tion messages in SMBs, and exits to the 
step initiation routine. 



DADSM error recovery routine (module 
IEFXT003), which determines what action 
should be taken when the request for 
space on a particular volume cannot be 
satisfied. 



Allocation error routines , which pro- 
cess error conditions encountered dur- 
ing allocation. 



ALLOCATION CONTROL ROUTINE 

The allocation control routine (Chart 35) 
performs housekeeping operations for the 
allocation and setup function of the 
initiator /terminator. It determines the 
sis.e of certain tables to be constructed by 
subsequent allocation routines, obtains 
main storage space for the tables, and 
plaices the addresses of the portions of 
storage reserved for each table onto a 
directory of tables called the allocate 
control block . 



Entry to the allocation control routine 
is made from the JFCB housekeeping control 
routine. Exit is to the demand allocation 
routine . 



Upon entry, the storage requirements of 
the; tables needed by allocation routines 
are calculated (see Figure 18). First, all 
requirements except those for the allocate 
volume table and TIOT are determined. The 
required amount of main storage space is 
requested and the addresses of the areas 
assigned to each table are calculated. 
(The first table is assigned the first 
available byte. Other addresses are deter- 
mined by incrementing the last assigned 
address by length of the the respective 
table.) The relative position of each 
table except the device mask table is shown 
in Figure 19. The device mask table is 
included with the coding and is not posi- 
tioned relative to the tables shown. As 
each address is determined, it is placed 
into the allocate control block. 



42 



When storage areas have been assigned 
for all but the allocate volume table (AVT) 
and task input/ output table (TIOT) , all 
step input/output tables (SIOTs) are placed 
into the area assigned to thertiu The size 
of the allocate volume table may then be 
determined. The number of volumes required 
by each data set (DD statement) is obtained 
from each SIOT and is used to calculate the 
number of AVT entries (one per volume) 
required. A second request for main 
storage space is issued and the address of 
the assigned area is placed into the alloc- 
ate control block. 

The storage requirements for the TIOT 
are calculated by the TIOT construction 
routine. 



If, after a request for space, the 
required amount of main storage space is 
not available, the job is canceled. 



Figure 20 shows the completed allocate 
control block. In addition to table 
addresses, the allocate control block con- 
tains other entries initialized by the 
allocate control routine. 



All allocation tables are described in 
the descriptions of routines in which they 
are completed. When the allocate control 
block has been completed, control is passed 
to the demand allocation routine. 



DD number table* 
Buffer 

Allocate control block I 
Channel load table 



Allocate work table 

Potential user on 
device table 

Separation strikeout 
pattern 

Each SIOT 
Volume table 

TIOT 



|A| 
4 |4| 
176 

44 

4 x the number of 

channels 

|D_| 
(20 + 8 |32|) A 

|D| 
4 |4| 

|D_I 
|32| 

68 
6S 

Determined by the 
TIOT construction 
routine 

Allocate volume table | 8B 

lfi_l 

Device mask table | 4 + (8 + |32|) F 
j. x_ 1 

Legen d; 

* = Not used. 

| J = Next higher integer if a fraction. 
A = Number of DD statements. 
B = Number of volumes or devices 

(whichever is greater) . 
D = Number of entries in the 

I/O supervisor UCB lookup table. 
F = Number of entries in device mask 

table . 
S = Number of volume serial numbers. 

Figure 18. Formulas for Determining Allo- 
cation Table Sizes 



r n 

j TIOT J 

. + 4 

DD number table | 
(not used) | 

-j Allocate volume 

Buffer | table 
+ i 

Allocate control block | 

Channel load table 

Allocate work table 

Potential user on 
device table 

Separation strikeout 
pattern 

SIOT 

Volume table 

L . X J 

Figure 19. Relative Positions of Tables 
Used for Allocation 



Initiator /Terminator 43 



Hex Dec 








4 

8 

12 

16 
20 
24 
28 
32 

36 

40 


Channel Load Table Address 


4 


4 


Address of First Empty Slot in Allocate Volume Table 


4 


8 


Potential- User- On- Device Table Address 


4 


C 


Allocate Work Table (AWT) Address 


4 


10 


Allocate Volume Table Address 


4 


14 


Volume Table Address 


4 


18 


Separation Strikeout Pattern Address 


4 


1C 


1 2 

Number of Satisfied Requests 


Number of Requests Not Satisfied 


2 


20 


2 

Number of Bytes Per AWT Entry 


Number of Work Table Entries with Separation 


2 


24 


3 2 

Length of Bit Pattern 


4 

Number of DD Statements in Job Step 


2 


28 


2 

Not Used 


5 

Number of Devices in Configuration 


2 



Notes: (Entry length is shown in upper right corner of field.) 

Set to zero initially and incremented by one each time a request is satisfied. 

Initially set to the number of data sets to be allocated (the number of DD 
statements in the step). This number is decremented by one each time a 
request is satisfied. 



The length (in words) of the primary bit pattern. 
The number of DD statements to be processed. 
5 The number of UCB addresses in the I/O supervisor UCB lookup table, 



Figure 20. Allocate Control Block 



DEMAND ALLOCATION ROUTINE 



The demand allocation routine (Chart 36) 
constructs the allocate work table and the 
allocate volume table. It also begins the 
allocation process by assigning devices to 
data sets that require specific devices. A 
specific device may be required because (1) 
the programmer specified it in a DD state- 
ment, or (2) all device requirements for a 
step could be met with only one combination 
of devices. The demand allocation routine 
performs the following eight functions: 



Allocate Work Table Construction 

Two tables, the allocate volume table (see 
Figure 21) and the allocate work table (see 
Figure 22) , are constructed by this func- 
tion. The allocate work table contains 
information that describes a data set and 
certain other information that is used in 
allocating a device (or devices) to it. 
One entry, as shown in Figure 22, is built 
for each DD statement. The allocate volume 
table describes the volume on which the 
data set resides or will reside. One entry 
is made in the allocate volume table for 
each volume required by a data set. 



Allocate work table construction. 

Volume affinity resolution. 

Data set device requirement calculation. 

Channel load table construction. 

Allocation of resident devices. 

Device range reduction. 

System input device (SYSIN) allocation. 

Specific device allocation. 



r t t 1 

| DD number J Status E | UCB address | 
h x + ^ 

| Pointer to volume serial | Volume affinity | 
| numoer in volume table | link j 

L X J 

Fiqure 21. Allocate Volume Table Entry 



44 



Hex Dec 




c 


12 


10 


16 


14 


20 


18 


24 



Number of Devices Available 2 
(Primary Bit Pattern) 


Pool/Split/ 1 
Suballocate Link 


Number of Devices Requested 


Status A 


Status B 


Status C 


Status D 


Number of Volumes 


Number of Devices Allocated 


Number of Devices Shared 


1 
Number of Devices Used 


Unit Affinity Link 


Reserved 


2 
Address of First Entry in Volume Table 


Possible Number of Devices in * 
Secondary Bit Pattern 


1 

DD Number 


1 
Reserved 


Internal Device Type Code 


4 


Primary Bit Pattern 

(Initially a duplicate of Secondary Bit Pattern) 


N 


~ Secondary Bit Pattern 


N 



Figure 22. Allocate Work Table Entry 



Most entries made in the allocate work 
table are obtained directly from other 
tables. The source of each such entry is 
shown in Figure 23. The device type is 
obtained from the SIOT and placed into the 
device type field of the allocate work 
table. It is then used eis a search argu- 
ment and a search of the device mask table, 
loaded from SYSl.LINKLIB, is made. The 
device mask table contains bit. patterns 
that correspond to each group of units de- 
scribed either by a generic name or by a 
user's esoteric name. For devices that 
fall into either of these categories, a 
matching device type found by the search 
causes the corresponding bit pattern from 
the device mask table to be placed into the 
primary and secondary bit pattern fields of 
the allocate work table. These bit pat- 
terns indicate devices that are eligible 
for allocation to a data set. 



The demand allocation routine builds its 
own bit pattern for devices described by 
specific unit names, To build the bit pat- 
tern, the demand allocation routine secures 
the device type from the SIOT and uses it 
as a search argument for a search of the 
UCB lookup table, from which the bit pat- 
tern can be extracted. 

The demand allocation routine moves the 
private and nonshareable flag bits from the 
step input/output table (SIOT) to the 
allocate work table (AWT) . The demand 
allocation routine also sets the nonshare- 
able bit in the allocate work table entry 
for a request if the request does not spe- 
cify a direct access device, and sets the 
private bit if the request is specifically 



for a nondirect access device (unless re- 
quest applies to passed data sets) . 

Data sets that have similar I/O device 
requirements are then linked together. 
Similar requirements are implied when the 
programmer specifies the following in a DD 
statement : 

• SPLIT- , which indicates that two or 
more data sets in the same job step are 
to share a cylinder of a direct access 
device. 

• SUBALLOC=stepname. ddname or ddname , 
which indicates that space for the data 
set will be suballocated from the space 
allocated to the data set described in 
the DD statement named ddname. 



Pointers are placed into the SPLIT/ 
SUBALLOC link field and unit affinity link 
field of the allocate work table to link 
all such groups together. 



Volume Affinity Resolution 

Volume affinity means that a certain volume 
is requested for more than one data set. 
Volume affinity may be requested explicitly 
by use of the REF parameter of the VOLUME 
field of the DD statement, or implicitly by 
specifying the same volume serials in one 
or more other DD statements. In either 
case, the subject volumes are linked with 
pointers placed into the volume link field 
of the allocate volume table by the demand 
allocation routine. All requests for the 
same volume that appear in the volume 



Initiator/Terminator 45 



affinity chain subsequently will be satis- 
fied with allocation of the device that 
bears the named volume. 



Entry 



Source 



Number of devices 
available 

POOL/SPLIT/SUBALLOC 
link 

Number of devices 
requested 

Number of volumes 

Status A 

Status B 

Status C 

Status D 

Number of devices 
allocated 

Number of devices 
shared 

Number of devices 
required 

Unit affinity link 

Address of first 
entry in volume 
table 

Possible number of 
devices in secondary 
bit pattern 

DD number 

Device type 

Primary bit pattern 

Secondary bit 
pattern 



Device mask table 

SIOT 

SIOT 

SIOT 

SIOT 

SIOT 

SIOT 

SIOT 

Inserted as devices 
are allocated 

Calculated 

Calculated 

SIOT 
Calculated 

Device mask table 

SIOT 

SIOT 

Device mask table 

Device mask table 



Figure 23. Allocate Work Table Entry 
Sources 



Data Set Device Requirement Calculation 

Information obtained from the allocate work 
table is used to determine the number of 
devices required by each data set. The 
following calculations are used: 



1. For a data set marked parallel mount 
(the P subparameter of the UNIT key- 
word was specified in the DD 
statement) : 

D A = V 2 

2. For data sets not marked parallel 
mount : 

a. If Vi = V 2 then D ± = V 2 

b. If V ± < V 2 and 

if Vi < D 2 then D ± = D 2 or 
if V ± > D 2 then D ± = V ± + 1 
where: 

Di = Number of devices actually to be 
used for the data set. 
= Number of devices requested for the 

data set. 
= Number of volumes to be shared by 

two or more data sets. 
= Number of volumes on which the data 
set exists. 



D 2 
Vi 
V 2 



The number of devices to be used (Di) is 
placed into the number of devices required 
field of the allocate work table. 

Channel Load Assignments 

Foi the purposes of allocation, a channel 
is a discrete path from a device to the CPU 
(or main storage) . The load on a channel 
is the number of data sets accessible 
through it. The channel load table (CLT) 
furnishes a place to record these channel 
loads. After the allocation control rou- 
tine (IEFXCSSS) builds the CLT in the 
scheduler work area, the various allocation 
routines use its information about channels 
and their loads to manage the channel and 
device resources efficiently. 

Device allocation does not depend on 
physical channel addresses. Instead, the 
CL1 defines channels by means of pointers 
to a list of device UCB addresses in the 
scheduler lookup table (see Figure 24). 
Each pointer defines a single channel, but 
may point to a series, or block, of several 
UCE address entries in the table. Each 
entry, in turn, is the address of a single 
device, so that a single channel may pro- 
vide access to a number of devices. This 
proliferation of the data paths that a 
channel provides is illustrated in Figure 
24, which also shows how more than one 
channel pointer froir the CLT can ultimately 
provide access to a single device. The 
flexibility in device allocation that this 
scheme provides is the flexibility, for 
example, that the Model 2870 multiplexor 
channel (with its subchannels) requires. 

The scheduler lookup table makes this 
flexibility possible by interposing one 
level of addressing between the CLT and the 
device UCBs. The allocation control rou- 



46 



tine builds the table in the scheduler work 
area, constructing it in three sections of 
hcilfword entries. The first section is a 
copy of the device list portion of the I/O 
supervisor lookup table. The entries in 
this section contain the addresses of spe- 
cific device UCBs. Addresses in the first 
halfword of each fullword entry in the CLT 
point to blocks of entries in the scheduler 
lookup table to define the discrete chan- 
nels for the allocation routines. 

For example, in Figures 24 and 25, P x 
points to the first scheduler lookup table 
entry for channel one. Channel one entries 
include all the succeeding entries to the 
point where the second pointer, P 2 , desig- 
nates the beginning of the block of entries 
representing devices accessed through chan- 
nel two. In Figure 24, the pointers from 
the CLT illustrate that channel one pro- 
vides a data path to the 2311, the 2314, 
and the 2400 devices, while channel two 
provides a data path to the 2321 device. 
Note, however, that channel two also pro- 
vides a data path to the 2311 device, 
b«5cause the first table entry for that 
channel also points to the UCB for that 
de^vice. 

The allocation routines can keep track 
of all the data paths provided to a device 
by using an allocation channel mask. This 
mask is a bit configuration that subroutine 
IEFXDPTH builds for use by the following 
allocation routines; 

• The device strikeout routine -- 
IEFX300A; 

• The separation strikeout routine — 
IEFXH000; 

• The decision allocation routine — 
IEFX5000; 

• The TIOT construction routine — 
IEFWCIMP. 

When an allocation routine calls subrou- 
tine IEFXDPTH, it passes to it a standard 
pcirameter list that includes a pointer to a 
UCB and a space for the channel bit pattern 
used as the mask. The subroutine searches 
the scheduler lookup table for UCB pointers 
identical to the one passed, notes the 
channel number associated with any such 
pointer entry, and turns on the bit corres- 
ponding to that channel in the mask space 
provided by the parameter list. The sub- 
routine then returns control to the calling 
allocation routine, which now has channel 
information at its disposal. 

The second halfword of each CLT entry is 
the number of data sets that constitutes 
the load on the channel to which the first 
halfword points. Hence, in Figure 25, L ± 



and L a are the respective loads on channels 
one and two. In the same figure, P n points 
to the last channel for which there is a 
set of one or more scheduler lookup table 
entries, and L n is the load on that chan- 
nel. P x points to the first field of hexa- 
decimal Fs in the scheduler lookup table. 
This field separates the first section, 
which contains the UCB addresses, from the 
second section. Allocation routines use 
this boundary and its CLT pointer to faci- 
litate rapid searching of the table. 

The second section in the table contains 
sets of ten pointers each for the sub-UCBs 
associated with every main UCB controlling 
a 2321 datacell drive. Such a set exists 
for every 2321 device that the operating 
system is using. A second entry of hexade- 
cimal Fs follows the last sub-UCB entry in 
the section to delimit the entries from the 
different type that follows. The P Y 
address in the CLT points out this quick- 
reference delimiter. 

The third section in the table contains 
pointers to the first section. These poin- 
ters relate each set of ten sub-UCBs to its 
2321 device main UCB. For example, in 
Figure 24, Q n is a pointer associated with 
the set of sub-UCB pointers P n »iOr an ^ it 
refers the set back to its proper main UCB 
via the pointer in the first section. 

Allocation of Resident Devices 

The resident device allocation routine 
allocates direct access devices containing 
reserved and permanently resident volumes 
to satisfy requests by serial number for 
these volumes. The devices that contain 
these volumes are known as resident 
devices. 

A volume is placed into the reserved 
status either when the operator issues a 
MOUNT command specifying the device on 
which the volume is mounted or when the 
volume is so listed in the PRESRES member 
of the IPL/NIP parameter list data set 
(SYS1.PARMLIB) . This type of volume cannot 
be dismounted unless its device is unloaded 
by means of an UNLOAD command. 

A permanently resident volume has at 
least one of the following characteristics: 

• The volume cannot be physically dis- 
mounted from its device. 

• The volume is a system residence volume 
that contains the initial program load- 
er (IPL) program. 

• The volume contains the linkage library 
(SYSl.LINKLIB) data set, procedure 
library data set, or any part of the 
job queue (SYS1.SYSJOBQE) data set. 



Initiator /Terminator 47 



• The volume is listed as permanently 
resident in the PRESRES member of 
SYSl.PARMLIB. 

For more information about the PRESRES data 
set memoer, refer to IBM System/360 Operat- 
i ng System: System Programmer's Guide f 
GC28-6550. For more information about 
reserved and permanently resident volumes. 



refer to IBM System/360 Operating System: 
Job Control Language Reference , GC28-6539. 



The resident device routine determines 
which direct access devices are resident 
and then allocates them to satisfy any 
requests for the volumes they contain. 




F 

Copy 
Super 
Lookup Table 



Second SecHon 



Third Section 



FFFF 



Reserved 



n,z 



^ 


• 




p 
n,io 


2 


FFFF 


2 


Q, 


2 


• 

- • X 

• T 

• 


Qn 


2 




FFFF 


2 




Figure 2U. Scheduler Lookup Table 



48 



He x Dec 




12 



ariablc 



2 

P, 


2 

L, 


2 

P 2 


2 

L 2 


2 

P 3 


2 

L 3 


2 

P 4 


L, 




2 

Pn 


2 

Ln 


2 

Px 


2 

7FFF 


2 

Py 


2 

7FFF 



Figure 25. Channel Load Table 

From the device mask taDle (DM 1 , Figure 
35) , the resident device routine first 
creates a special bit pattern that repre- 
sents all direct access devices in the sys- 
tem. It sets a bit in the pattern to one 
for each direct access device. It then 
searches for unit control Mocks represent- 
ing direct access devices, using this bit 
peittern to identify the unit control 
blocks. 

The routine compares the volume serial 
number in each request with the serial 
number in each unit control block in which 
the permanently resident bit or the 
reserved bit is one. If the serial numbers 
mcitch, the routine passes control to the 
device strikeout routine to allocate the 
device. (That is, it places the address of 
the unit control block into the allocate 
volume table entry. Figure 21, and 
increases, by one, the count of allocated 
devices in the allocate work table entry 
that represents the data set. Figure 22.) 

Device Ra nge Reduction 

The device range reduction routine reduces 
the number of devices that can be allocated 
to satisfy certain requests. In addition, 
this routine allocates devices containing 
reserved tape volumes. 

The device range reduction routine pre- 
vents allocation of devices that are 
ineligible to satisfy certain requests. 
Devices are ineligible under the following 
conditions : 

• The device is the primary console. 

• The device is offline or is being 
changed to offline status. 



• The device has either been allocated or 
is resident, and the request is for an 
unspecified private volume. (Each such 
request requires an unused volume.) 

• The device has either been allocated or 
is resident; the device contains a 
private volume; and the request is for 
temporary data set space on a volume 
that is neither specific nor private. 

• The device is a resident, direct access 
device, and the request is for a spe- 
cific volume. 

• The device is neither a direct access 
device nor a tape device (unit record 
or graphic equipment, for example) and 
is allocated, unless one of the two 
following conditions exists: 

• The device is the system output 
device, and the request is for a SYS- 
OUT data set. 

• The device is the system input 
device, and the request is for a 
SYSIN data set. 



• The device does not contain a storage 
volume, and the request has all of the 
following characteristics: 

• The request is not for temporary data 
set space. 

• The request is not for a specific 
volume. 

• The request is not for a private 
volume. 



A storage volume is a permanently resi- 
dent or reserved volume that may be used to 
keep any data set specified in a DD state- 
ment in which KEEP has been specified. 



To prevent allocation of these inelig- 
ible devices, the device range reduction 
routine alters primary bit patterns repre- 
senting devices that are available for 
allocation. In each bit pattern, ones 
represent devices that can be allocated, 
and zeros represent those that can not. A 
primary bit pattern forms part of each 
allocate work table (AWT) entry. (Each 
entry stands for one request.) The device 
range reduction routine eliminates each 
device that is ineligible to satisfy a par- 
ticular request by changing the bit corres- 
ponding to the device from a one to a zero 
in the bit pattern corresponding to the re- 
quest. The final bit pattern thus repre- 
sents only devices that can satisfy the 
request. 



Initiator/Terminator 49 



As each ineligible device is disquali- 
fied, a count of eligible devices in each 
affected allocate work table entry is 
reduced by one. If this count becomes less 
than the number of devices needed to satis- 
fy the request represented by the entry, 
the device range reduction routine passes 
control to the allocation error recovery 
routine. If recovery is possible, this 
routine provides a list of devices that can 
satisfy the request. The operator may 
either reply with a three-character device 
name or cancel the job. (If allocation 
error recovery is necessary, the entire 
allocation procedure is repeated.) 

If, during this processing, the device 
range reduction routine finds a unit con- 
trol block representing a tape unit with a 
reserved volume mounted on it, it allocates 
the device if the volume was requested. 



SYSIN Allocation 

If the device range reduction routine 
encounters a request for the device desig- 
nated as the system input device, it allo- 
cates that device. 



Specific Device Allocation 

Allocation is next made to requests for 
specific devices or requests which, because 
of range reduction or previous allocation, 
can be satisfied only by a specific device. 



Exits From Demand Allocation 

When all processing is completed in the 
demand allocation routine, all requests 
within the step may have been satisfied. 
If so, exit is made to the TIOT construc- 
tion routine. If, however, some requests 
remain outstanding, control is passed to 
the automatic volume recognition routine if 
it was specified during system generation. 
If additional requests remain, control is 
passed to the decision allocation routine. 
When allocation is complete, the "number of 
unallocated entries" field in the allocate 
control block (ACB) reaches zero. If the 
number of devices required exceeds the 
number of devices available, control is 
passed to an allocation error routine. 
Before any exit is taken, the device mask 
table is deleted. 



AUTOMATIC VOLUME RECOGNITION 

The automatic volume recognition (AVR) rou- 
tine decreases the time required for job 
step initiation by enabling the operator to 
mount volumes needed for subsequent job 
steps as soon as devices become available. 



During subsequent job step initiation, the 
AVR routine recognizes that volumes needed 
for the current job step are mounted, thus 
saving the time that the system otherwise 
would spend waiting for the operator to 
find and mount them. 

Before the next job step after a volume 
has been mounted, the AVR routine reads the 
volume label and associates the volume with 
the device containing it, using information 
from the label. When the volume is needed 
foi: a subsequent job step, the AVR routine 
can then identify and allocate the device 
on which it is mounted. 

The AVR routine contains two modules, 
IEFXV001 and IEFXV002, as shown in Charts 
37 and 38 respectively. Most of the AVR 
routine's function is performed by 
IEFXV001, the first module to receive con- 
trol. The demand allocation routine passes 
control to module IEFXV001 of the AVR rou- 
tine. Then IEFXV001 uses a BALR instruc- 
tion to branch and link to the VCON type 
address of the second module, IEFXV002, 
whose main function is primarily one of 
reading volume serial numbers. 

IEFXV002 reads the volume serial number 
and verifies it. If the volume serial 
nunber is valid, IEFXV002 then places it in 
the unit control block (UCB) and returns 
control to IEFXV001. However, if an I/O 
error occurs, IEFXV002 sets an error return 
code without altering the UCB. fohen it 
encounters nonstandard labels during the 
the reading process, it branches to 
IEFXVNSL, the nonstandard label (NSL) pro- 
cessing routine. If IEFXVNSL returns no 
error code, IEFXV002 places the volume 
serial number into the UCE as though the 
NSIi routine had never received control for 
spcicial processing, then returns control to 
IEFXV001. Errors detected upon return from 
the NSL routine, however, cause IEFXV002 to 
bypass alterations of the UCB and instead 
to return control directly to IEFXV001. 
IEFXVNSL returns an error code if no user 
written routine has replaced the IBM supp- 
lied one, or for whatever reason the user 
written routine specifies. 



The AVR routine allocates devices to 
satisfy requests that specify 2311 and 2314 
direct access volumes, 7-track tape volumes 
having a tape density specified during sys- 
tem generation, and 9-track tape volumes. 
The:se volumes must be specified by either a 
serial number or a data set name that 
implies a serial number. The AVR routine 
fiist allocates devices containing mounted 
volumes. If any of the volumes have been 
mounted after the start of the last job 
st€;p, and have consequently not had their 
labels read, the AVR routine reads them at 
this time. 



50 



When all devices containing mounted 
volumes which are needed for the current 
job step have been allocated, the AVR rou- 
tine attempts to satisfy any remaining 
requests for 2311 and 2314 direct access 
volumes and 9-track tape volumes. The AVR 
routine determines whether th€*re are suffi- 
cient unused devices of each device type to 
satisfy the outstanding requests for that 
device type. If necessary, volumes not 
needed for the job step <ire unloaded. If 
the AVR routine can obtain enough devices, 
it prints a list of the requested volume 
serial numbers and allocates the devices as 
the operator mounts the volumes . If enough 
devices are not available or if all of the 
needed volumes cannot be mounted, however, 
the operator must cancel the job. 



Processin g Requests for Mounted Volumes 

The AVR routine first satisfies requests 
for volumes which are already mounted. The 
AVR routine searches for such volumes by 
examining all unit control blocks that 
represent online, ready 2311 and 2314 
direct access devices and 9-track and 7- 
tape devices. If the serial number in the 
unit control block is zero, it means that 
the volume has been mounted since the start 
of the last job step and has therefore 
never had its label read. The AVR routine, 
at the time it finds such a volume, reads 
the volume label into main storage, 
extracts the serial numb€;r from the label, 
and records it in the unit control block 
representing the device. (To extract the 
serial number from a nonstandard label, the 
AVR routine uses a volume serial number 
routine, 1EFXVNSL, which must be supplied 
by the user. A routine with the same name 
is supplied by I3M to indicate an error if 
the user has provided a nonstandard label 
but has not substituted his own routine to 
read it.) If the volume had been mounted 
before the start of the last job step, the 
serial number has already oeen read. 



The AVR routine next determines, for 
each mounted volume, whether it is needed 
for the current job step. To make this 
determination, it searches in the volume 
table (VOLT) for the serial number of the 
mounted volume. (Each entry in this table 
represents a volume that has been specific- 
ally requested.) If the AVR routine 
locates the serial number, the volume is 
needed for the job step. The AVR routine 
then uses the device strikeout routine to 
allocate the device to satisfy all requests 
for the volume. If the serial number is 
not in the volume table entries for this 
job step, however, the volume is not pre- 



sently needed. The AVR routine subsequent- 
ly ignores the device and looks for another 
previously mounted volume. If the device 
has already been allocated to a different 
volume, or if the volume has been allocated 
to a different device by the demand alloca- 
tion procedure, the AVR routine notifies 
the operator and unloads the volume using 
the external action routine. 



Processing Requests for Unmounted Volumes 

The AVR routine finally attempts to satisfy 
all remaining specific volume requests. 
For these requests to be satisfied, enough 
devices for all of the requests either must 
be available or must be made available. If 
enough devices become available, the AVR 
routine provides the operator with a list 
of volumes to mount and allocates the de- 
vices as he mounts the volumes on them. If 
sufficient devices for the job step cannot 
be made available or if all of the required 
volumes cannot be mounted, the operator 
must cancel the job. 



Obtaining Devices : Before the AVR routine 
requests that the operator mount any 
unmounted volumes, it determines whether 
enough devices to contain them are avail- 
able. If there are not enough devices 
without mounted volumes to begin with, the 
AVR routine determines whether it can 
unload enough devices. The devices it con- 
siders for unloading contain mounted 
volumes not needed for the job step. If it 
can, it unloads these devices so that the 
operator can replace the mounted volumes 
with volumes needed for the job step. 
Otherwise, the AVR routine attempts to have 
enough offline devices placed into online 
status to satisfy the remaining specific 
requests . 



To determine whether there are enough 
devices, the AVR routine compares, by 
device type, a count of available devices 
with a count of needed devices. Because 
the need for each device type is filled 
separately, a shortage of any one type 
means that not enough devices are available 
for the job step. 



The available devices comprise all 
online 9-track tape units, 2311 disk units, 
and 2314 disk units that have not been 
allocated. Separate counts are made of de- 
vices not in the ready status (which norm- 
ally do not contain mounted volumes) and 
devices that are ready (all of which have 
mounted volumes) . 



Initiator/Terminator 51 



To eliminate any unnecessary unloading 
of devices, the AVR routine compares, 
first, the number of devices needed with 
the number of online devices not having 
mounted volumes (that is, those that are 
not in the ready status) . If there are 
enough such devices, none need be unloaded, 
and the AVR routine can immediately print a 
list of volumes to be mounted. 

If ready devices must be unloaded, the 
AVR routine determines the number of ready 
devices still needed and whether enough can 
be unloaded. 

If the AVR routine has determined that 
enough ready devices can be unloaded, it 
stores the identities of a sufficient numb- 
er of devices and then unloads them. To 
fill the guota, it first tries to obtain 
enough ready devices not containing 
retained volumes or volumes with data sets. 
If the AVR routine cannot find enough de- 
vices, it obtains the remainder needed from 
among devices containing these kinds of 
volumes. The AVR routine unloads the de- 
vices with the external action routine, 
which also prints a list of unit addresses 
so that the operator will know which de- 
vices have volumes to be dismounted. The 
AVR routine then provides the operator with 
a list of the serial numbers of volumes to 
mount . 



The AVR routine extracts the new serial 
number from the volume label , removes the 
serial number from the list of required 
volumes, and allocates the device. Then 
the; AVR routine waits for the operator 
either to mount the next volume or to can- 
cel the job. It repeats the procedure 
until either all specific volume requests 
have been satisfied or the job is canceled. 

When the devices have been allocated, 
the AVR routine passes control to the TIOT 
construction routine, unless there are more 
volume requests. If there are, the AVR 
routine passes control to the decision 
allocation routine, which satisfies the 
remaining requests. 



DECISION ALLOCATION ROUTINE 

The decision allocation routine (Chart 40) 
allocates devices to most data sets for 
which devices have not yet been allocated 
by either the demand allocation or the 
automatic volume recognition routine. This 
includes all remaining requests except 
requests for space on unspecified public or 
unspecified storage volumes. The latter 
recfuests are fulfilled by the space request 
routine. 



In an attempt to make more devices 
available, if it is apparent that enough 
ready devices cannot be unloaded, the AVR 
routine uses the allocation error recovery 
routine (IEFXJIMP) to print a list of off- 
line devices that can be made available. 
The operator either may reply with a three- 
character device name to place a device 
into online status or cancel the job. (If 
allocation error recovery is necessary, the 
entire allocation procedure is repeated.) 



A llocating Devices on which Volumes have 
been Mounted : When the AVR routine has 
determined that the required number of de- 
vices is available for allocation, it pro- 
vides the operator with a list of serial 
numbers of the needed volumes . As the 
operator mounts these volumes, the AVR rou- 
tine allocates the corresponding devices to 
satisfy requests for these volumes. 



After printing the list, the AVR routine 
waits for the operator to mount a volume. 
A device-end I/O interruption releases the 
AVR routine from its waiting status when 
the operator mounts the first volume and 
presses the START button on the device. 



Upon entry to the decision allocation 
routine, an attempt is made to reduce the 
number of devices that are candidates for 
allocation. A request for unit or channel 
separation from devices allocated by either 
the demand allocation or automatic volume 
recognition routines eliminates the units 
or additional devices on the selected chan- 
nels from further consideration. If this 
is the case, the separation strikeout sub- 
routine is entered. This subroutine, by 
changing corresponding bits in the primary 
bit pattern, eliminates these devices from 
consideration for allocation. 



The number of data sets directed to each 
channel is then determined and added to the 
totals in the channel load table (see 
Fiqure 24) . This table is later used to 
"spread the load" across the channels, 
thereby: 

<» Obtaining maximum overlap of I/O 
activity. 

'• Reducing the possibility of making a 
channel ineligible because all of its 
devices had been allocated too early. 
(Some channel separation requests would 
then be impossible to satisfy.) 



52 



The maximum number of data sets that 
could use each device is next determined 
and placed into the potential user on 
device table (see Figure 26). This table 
is later used to determine the order in 
which devices will be selected for data 
sets. (Devices first selected are those 
with the fewest potential users.) 



r ■ t- 

| No. of data | 
I sets for first J 
| device j 
l . jl. 



~t 1 

| No. of data | 
| sets for nth | 
| device | 

-j. j 



Figure 26. Potential User on Device Table 



The remainder of the decision allocation 
routine allocates devices. First, devices 
are allocated to data sets for which only 
one device is eligible. Then all other 
requests (except those for unspecified 
public or unspecified storage volumes) are 
processed in the following manner. A data 
set is selected and then a device for the 
data set is selected and allocated to it. 
Another data set is then processed. 



Data Set Selection 

Data sets are selected by considering the 
number of devices eligible for allocation 
to them. That is, the first data set 
selected is the one for which the smallest 
number of devices is eligible. 

The decision allocation routine selects 
two kinds of requests, both of which must 
be satisfied with the allocation of devices 
containing nonshareable volumess: 

• Requests for nonshareable volumes. 
(Each such request h<is a nonshareable 
flag in its allocate work table entry, 
shown in Figure 22.) 

• Requests that may be satisfied with the 
allocation of either a direct- or 
sequential-access device, if 
sequential-access devices are available 
for them. (As each of these requests 
is satisfied, a nonshareable flag is 
placed into its allocate work table 
entry to mark the allocation of a 
device containing a nonshareable 
volume . ) 



Selection is performed by scanning the 
allocate work table. If two or more data 
sets have the same number of eligible de- 
vices, they are selected in the following 
order : 



1. Data sets with separation requests. 

2. Data sets with affinity requests. 

3. Passed data sets. 

4. All others. 



Device selection 

When a data set has been selected, a device 
is selected and allocated for it. Devices 
are considered in the following order: 

1 . If the possible devices for a data set 
exist on more than one channel, the 
channel with the greatest number of 
free devices of the type requested is 
chosen. 

2. If two channels have the same number 
of free devices of the requested type, 
the channel with the lightest load is 
chosen; the device which has the few- 
est possible users is chosen. 

3. To satisfy requests for public non- 
specific (scratch) tape volumes, de- 
vices with mounted tape volumes are 
given preference. To satisfy requests 
for direct access volumes and specific 
tape volumes (including private 
volumes and volumes which are used for 
multi-volume public data sets) , de- 
vices without mounted volumes are 
given preference. 

4. If two devices have the same number of 
possible users, the first one in the 
I/O supervisor UCB lookup table is 
chosen. 



Device Allocation 

As indicated previously, the decision allo- 
cation routine selects a data set and an 
eligible device, allocates the device, and 
then selects another data set. To allocate 
a device, the decision allocation routine 
places the address of the unit control 
block representing the device into the 
allocate volume table entry (Figure 21) 
representing the required volume and adds 
one to the "number of devices allocated" 
field of the allocate work table entry for 
the data set (Figure 22) . 



While a request is being satisfied, the 
same device is also allocated to satisfy 
any other requests that specify the same 
volume. Multiple allocations may be per- 
formed in this case, because all requests 
for the same volume appear in a volume 
affinity chain, which is a series of linked 
allocate volume table entries (Figure 21). 



Initiator/Terminator 53 



The decision allocation routine satisfies, 
in the same way, requests that specify unit 
affinity or that have a split or suballoc- 
ate relationship (Figure 22) . 



When a device is allocated, the decision 
allocation routine alters bit patterns in 
the allocate work table entries for certain 
other requests. Each bit pattern specifies 
the devices that are eligible to contain 
the data s€;t represented by the allocate 
work table entry. 



If a private volume request was satis- 
fied, the decision allocation routine 
changes the bit representing the allocated 
device to zero in all primary and secondary 
bit patterns so that the device cannot be 
selected to satisfy another request. Such 
devices are exempted from further alloca- 
tion because each private volume may not 
contain other data sets and must be removed 
after use. 



If the request was satisfied with a 
device containing a nonshareable volume, 
the decision allocation routine changes the 
bit representing the device to zero in the 
primary and secondary bit patterns of the 
allocate work table entries that represent 
all other data sets that require nonshare- 
able volumes. A device allocated to satis- 
fy a request for a nonshareable volume thus 
cannot satisfy additional requests of this 
kind. 



If all eligible devices are allocated 
before all data sets for a step have been 
selected for allocation, the decision allo- 
cation routine passes control to an alloca- 
tion error routine. 



have been satisfied except requests for 
unspecified public or unspecified storage 
volumes. Therefore, entry may be from the 
demand allocation routine, the automatic 
volume recognition routine, or the decision 
allocation routine. Exit is to the extern- 
al action routine. 



Upon entry, main storage space required 
to build the TIOT is calculated using the 
first formula shown in Figure 27, and space 
is requested. The standard TIOT is shown 
in Figure 28. TIOT entries are constructed 
for each data set in a step. Entries are 
also constructed when use of the job 
liorary is requested or when a program, 
created in a previous step, is to be 
executed as the current step. Figure 29 
shows the sources of entries in the TIOT. 



The TIOT construction routine deter- 
mines, for each request for an unspecified 
storage or unspecified public volume, which 
devices are eligible to be allocated by the 
space request routine. It obtains this 
information from the allocate work table 
entry (Figure 17) for the request, which 
contains a primary bit pattern representing 
the devices that are eligible to satisfy 
the request. 



The TIOT construction routine places 
pointers to all unit control blocks repre- 
senting eligible devices into the TIOT 
entry for each such request. If more than 
one device can satisfy a request, it 
selects, first, the channel with the light- 
est load, and, on this channel, the device 
that has been allocated to satisfy the 
smallest number of requests. When the 
first device has been selected, it places 
other devices in order, using the following 
criteria: 



Upon successful completion of processing 
by the decision allocation routine, exit is 
made to the TIOT construction routine. 



TIOT CONSTRUCTION ROUTINE 

The task input/output table (TIOT) con- 
struction routine (Chart 41) obtains space 
for and ouilds the processing program's 
task input/output table. The primary func- 
tion of the TIOT is to provide the data 
management open, close, and end-of- volume 
(EOV) routines with pointers to JFCBs and 
allocated devices. 

Entry to the TIOT construction routine 
is made when all requests for I/O devices 



1 . Devices on the same channel as the 
first device selected, but which do 
not contain passed data sets. 

2 , Devices that do not contain passed 
data sets and do not violate requests 
for separation. 

3 ■ Devices that contain passed data sets 
and do not violate separation 
requests. 

4 . Devices that do not contain passed 
data sets and violate separation 
requests. 

5„ All other devices eligible to receive 
public volumes. 



54 



Should more than one device have similar 
attributes, their pointers are arranged in 
the order in which the devices are repre- 
sented in the primary bit pattern. 



Space required to build TIOT = 
28 + 16N ± + 4N 2 + 4(N 3 x N 4 ) 
_ .j 

Space occupied by completed TIOT = 
28 + 16N ± + 4N 2 

r _ ^ 

Where: 

Na. = Number of DD statements. 

N 2 = Number of devices allocated to 
the step. 

N 3 = Number of requests for public 
volumes. 

N 4 = Number of devices available for 
public volumes. 

i j 

Figure 27. Formulas for Determining Task 
Input/Output Table Space 
Requirements 



Jobname 



Stepname 



Name of step in which 
procedure was requested 



T T " 

Length | status | Relative 
of | A | location 
entry | jof pool 
x x 



Ddname 



Address of 
JFCB 



- T 

|Sta- 
|tus 

|C 
.x 



Status j j Address 

B | | of UCB* 
x. x ~ 

♦Address of sub- UCB if 
device is 2321 Data Cell 
drive 



Control Portion 



DD Entry 



r t T" 

| | Number | 
j j slots j 
I I in | 
I I pool | 

Y -L ■»-. 



_ T 1 

| Number | 
j devices | 
I in | 
I Pool | 
.x H 



Pool Entry 



h 



Poolname 
.j 

| Slot for UCB | 

L . LJ 

Figure 28. Task Input/Output Table 



Entry 



Source 



| Jobname 


JCT | 


| Stepname 


SCT | 


j Stepname of step 
j in which procedure 
jwas requested 


SCT | 


j Length of entry 


Calculated | 


j Status A 


Calculated j 


j Relative location 
j of pool 


Calculated | 


j Ddname 


SIOT | 


| Address of JFCB 


SIOT | 


j Status C 


Calculated | 


| Status B 


Calculated | 


| Address of UCB 


I/O supervisor UCB | 
Lookup Table j 


j No. of slots in 
j pool 


Calculated | 


j No. of devices in 
j pool 


SIOT | 


j Poolname 


SIOT | 


J Slot for UCB | I/O supervisor UCB | 
| | Lookup Table j 
L _x _ _ J 



Figure 29. Task Input/Output Table Entry 
Sources 



EXTERNAL ACTION ROUTINE 

The external action routine (Chart 42) 
issues mounting instructions, verifies that 
the correct volumes have been mounted, and 
unloads incorrectly mounted volumes. 



Entry to the external action routine is 
made from the TIOT construction routine. 
Exit is made to the space request routine. 



Upon entry, devices allocated to each 
data set are checked and any required dis- 
mounting is requested. (The operator is 
notified of volume dispositions.) Messages 
instructing the operator to mount the 
required volumes are then issued, and 
checks are made to ensure that volumes were 
mounted on the correct units. 



Initiator/Terminator 55 



SPACE REQUEST ROUTINE 

The space request routine (Chart 43) pro- 
cesses requests for space on direct access 
volumes . It determines whether a volume 
has enough space for the data set specified 
in a particular request, and, if so, it 
obtains space on the volume for the data 
set. If space is not available initially, 
the space request routine attempts to loc- 
ate another volume with sufficient space. 

The space request routine, which 
receives control from the external action 
routine, searches among the task input/ 
output table (TIOT) entries for requests 
for direct access volume space. It pro- 
cesses these requests in two different 
ways, depending on whether or not a device 
was previously allocated to satisfy the 
request. 

Obtaining space If a Device Was Allocate d 

If a device has been allocated to satisfy 
the request (because a specific device or 
volume was named) , the space request rou- 
tine attempts to obtain space on the volume 
that is mounted on the device. It passes 
control to the direct access device space 
management (DADSM) routines, which record 
the limits of an extent on the volume into 
a data set control block (DSCB) if space is 
available. If the mounted volume does not 
have space for the data set, and is not 
being used to contain another data set for 
the job step, the space request routine 
passes control to the external action rou- 
tine, which directs the operator to mount 
another volume on the allocated device. 

Obtaining Space If a Device Was Not 
Alloc ated 

If a device has not been allocated to sat- 
isfy the request, the space request routine 
attempts to obtain space on an unspecified 
public or unspecified storage volume, 
depending on the type of request. (Either 
unspecified public or unspecified storage 
volumes can contain temporary data sets, 
but only storage volumes are eligiole to 
contain data sets that are to be kept.) If 
the space request routine determines that a 
volume has space for a data set, it allo- 
cates the device containing the volume. 

The space request routine attempts to 
obtain space for the data set on a volume 
that is mounted on an eligible device. 
(The devices that are eligible to satisfy a 
particular request are indicated in the 
task input/output table entry for the re- 
quest. Each entry contains pointers to the 
unit control blocks representing eligible 
devices.) To determine whether space is 
available, the space request routine passes 
control to the direct access device space 



management (DADSM) routines. These rou- 
tines attempt to specify an extent on the 
volume. If space is not available, control 
passes to the DADSM error recovery routine, 
to determine whether another volume can be 
mounted. If no volume can be mounted, exit 
is taken to the external action routine, 
which requests the operator to mount a 
volume on an eligible device that does not 
contain a volume. 

When all requests for space have been 
satisfied through the above procedure, or 
when an unrecoverable error has been 
detected (that is, when space cannot be 
allocated), the space request routine exits 
to the TIOT compression routine. 



TICT COMPRESSION ROUTINE 

The TIOT compression routine is entered 
frcm the space request routine when all 
reguests for space have been satisfied, or 
when an unrecoverable error has been 
detected. 

In the case of a normal entry, the TIOT 
compression routine reduces the TIOT to its 
final size, adds scratch information to 
JFCBs where necessary, and adds allocation 
messages to SMBs when the allocation mes- 
sage level is one. This message level may 
be either the system generation default 
option or the result of a coded job control 
language JOB statement parameter, 
"M£GLEVEL=(x,l)". The routine exits to the 
step initiation routine of the 
ini tiator /terminator . 

In the case of an error entry, the rou- 
tine reduces the TIOT to its final size and 
exits to the allocation error routine (see 
below) . The format of the TIOT is shown in 
Fioure 28. 



DADSM ERROR RECOVERY ROUTINE 

The DADSM error recovery routine is entered 
from the space request routine when space 
is not available on a requested volume. 
Th€: routine determines whether the 
requested volume is unused and removable 
(that is, not permanently resident and not 
reserved). If the volume can be removed, 
the DADSM error recovery routine returns to 
th€; space request routine, which exits to 
the; external action routine to request that 
the; operator mount another volume on the 
same device. 

If the requested volume cannot oe 
removed, the DADSM error recovery routine 
se3.ects another device, then returns con- 
trol to the space request routine; the 
space request routine then attempts to 
obtain space on another mounted volume. 



56 



(If no other device is available, the re- 
quest for space cannot be fulfilled.) If 
the failing request was one of several non- 
specific requests for space on the same 
volume for the job step, and all users on 
that volume are those assigned by the space 
request routine, the allocated data sets 
will be unallocated and the volume may be 
jremoved. When a new volume is mounted, the 
space request routine will again attempt to 
obtain space for the data sets. 



ALLOCATION ERROR ROUTINES 

Allocation error routines are entered when 
error conditions are encountered by alloca- 
tion and setup routines. There are two 
error routines: the recovery routine and 
the nonrecovery routine. 

The recovery routine is entered if an 
error condition is detected before a TIOT 
is built for the step. It may be entered 
from the demand allocation, automatic 
volume recognition, decision allocation, or 
TIOT construction routine. If allocation 
requirements can be satisfied by changing 
the status of a device from offline to 
online (determined by checking the secon- 
dary bit pattern) , the recovery routine 
issues a message to the operator requesting 
him to place additional devices online. If 
he does, allocation for the step is begun 
anew by entry to the allocation control 
routine. If the operator does not or can- 
not add devices to the configuration, the 
recovery routine cancels the job. 

The nonrecovery routine is entered when 
an error condition is detected after the 
TIOT has oeen built for the step. It 
passes control to the step termination por- 
tion of the initiator /terminator. 



Step Initiation 

The step initiation routine of the 
initiator/terminator (Chart 46) makes pre- 
parations for passing control to the pro- 
cessing program. If a STEPLIB DD statement 
is present in the step, the step library 
data set is opened. If not, and if a JOB- 
LIB DD statement is included in the job, 
the job library data set is opened. If the 
program to be executed exists on a data set 
created in a previous step, a DCB is 
created for that data set and is opened. 
Also, several tables are stored, releasing 
to the processing program the space they 
occupied. Step initiation passes control 
to the processing program. 

The step initiation routine is entered 
from the space request routine. Upon 
entry, control is passed to the pseudo- 



sysout subroutine, which writes the con- 
tents of system message blocks (SMBs) onto 
the system output data set. 

When control returns from the pseudo- 
sysout subroutine, the step initiation rou- 
tine scans the TIOT for entries indicating 
SYSOUT processing. The UCB address for 
these entries is zero. When such an entry 
is found, the corresponding JFCB is read 
into main storage. The device class 
(placed in the JFCB by the interpreter) is 
obtained, and the UCB address of the writer 
currently active for that class is placed 
in the TIOT entry. If a DSNA&E parameter 
was specified in the START command, the 
step initiation routine places the DSNAfoE 
in the JFCB. The LCT and JCT are then 
stored and the space that they had occupied 
is released. 

Main storage space to be used by the 
processing program is then obtained. A 
portion of this area is reserved for the 
following : 

• One DCB for step or job library (if 
any) . 

• Fetch DCB (if any). 

• Macro- parameter list. 

• TIOT. 

• Processing program register save area. 



First, the TIOT is moved from the 
initiator/terminator work area to the area 
of processing program storage assigned tc 
it. The TIOT is also stored, and the space 
it occupied is released. The macro parame- 
ter list (see Figure 30) is then built and 
the programname entry and initializing par- 
ameter values entry (PARM information) are 
inserted. The SCT is then stored, and the 
space it occupied is released. If a step 
or job library has been requested, the data 
set is opened, and the address of its DCB 
is placed into the TCB. If a fetch DCB is 
required (PGM=*.stepname.ddname was speci- 
fied in the EXEC statement) a DCB is 
created and opened, and its address is 
placed into the macro parameter list. 



The cancel ECB in the selected job 
queue 1 is then set up for the processing 
program: i.e., the low-order byte is 
changed to the number 255. If a CANCEL 
command was issued, the step initiation 
routine issues the ABEND macro instruction. 



x Just prior to passing control to the job 
step, the low-order byte of the cancel ECB 
in the selected job queue is changed to all 
ones. This causes issuance of an ABEND or 
ABTERM rather than a POST by the master 
scheduler if the operator issues a CANCEL 
command for the job. 



Initiator/Terminator 57 



If a CANCEL command was not issued, an XCTL 
macro instruction is used to pass control 
to the processing program. 



Offset 

Hex Dec 





10 16 



14 20 



18 24 



Address of Programname Entry 



Address of Fetch DCB 



Programname (obtained from SCT) 



Hexadecimal 
80 



Address of " Initializing Parameter 
Values" Length Field 



Not Used 



Length of Initializing 
Parameter Values Entry 



40 



t 



Initializing Parameter Values (Obtained From SCT) 



J 



Figure 30. Macro Parameter List 



Termination 

The termination function of the initiator/ 
terminator (Chart 47) performs post-step 
and post- job housekeeping. It is normally 
given control following step execution, out 
is also given control when a job management 
routine encounters an irrecoverable error 
while processing a job step. Termination 
routines: 

• Release space occupied by tables. 

• Free I/O devices. 

• Dispose of data sets referred to or 
created during execution. 

Major components of termination are: 

• The step termination routine, which 
performs post- step housekeeping 
functions . 

• The job termination routine, which per- 
forms post- job housekeeping functions. 



The disposition and unallocation subroutine 
is used by both the step and job termina- 
tion routines. Basically, this subroutine 
handles disposition of data sets and frees 
devices allocated to a step. The disposi- 
tion and unallocation subroutine is de- 
scribed in Appendix A. 



STEP TERMINATION 

The step termination routines (Chart 4 8) 
perform cleanup operations for each job 
step. They are entered from the supervisor 
when a step has been terminated either 
normally due to successful completion of 
execution or abnormally due to an error 
condition. They are also entered from job 
management routines when an unrecoverable 
error condition has been detected. 



When entry is from the supervisor, the 
step termination entrance routines 
(IE:?SD011 and IEFW42SD) perform initializa- 
tion functions. These functions include: 

• Setting the cancel ECB in the selected 
job queue to zero. 

• Placing the LCT, JCT, SCT and problem 
program TIOT into a main storage work 
area. 

• Constructing a parameter list contain- 
ing the address of the above tables. 

• Initializing an SMB for use by step 
termination routines. If write-to- 
programmer messages were produced dur- 
ing execution of the step, SMBs con- 
taining WTP messages will precede those 
used to contain termination messages. 



In the case of normal termination, the 
entrance routines reset the restart infor- 
mation in the JCT; in any case, the JCT is 
stored in the job queue. 

If the job step has terminated abnormal- 
ly, control is passed to the indicative 
dump routine (IEFIDUMP) . After the dump 
has been performed, control passes from the 
indicative dump routine to the step ter- 
mination control routine. If the job step 
has terminated normally, the indicative 
dump routine is bypassed. 

The step termination control routine 
(IEFYNIMP) is entered from the step ter- 
mination entrance routines, from the indi- 
cative dump routine, or from a job manage- 
ment routine as a result of an unrecover- 
able error. It uses these major 
subroutines : 

• Restart preparation routine (IEFRPREP). 

• Step termination data set driver rou- 
tine (IEFYPJB3) . 

• Job statement condition code routine 
(IEFVJIMP). 

• Disposition and unallocation subroutine 
(IEFZGST1, IEFZGST2). 



58 



• User's accounting routine (IEFACTLK), 
if included in the system. 



The control routine places the problem 
program TIOT address into the TCB f and the 
task completion code into the SCT. In the 
case of abnormal termination, the WTO macro 
instruction is used to inform the operator 
that the step has failed, and control is 
then passed to the restart preparation 
routine. 

The restart preparation routine (Chart 
49) determines if a resteirt is possible. 
If it is not, it sets the "no restart" 
indicators in the JCT (bit JCTNORST in byte 
JCTRSW2 of the JCT) . If a step restart is 
to occur, the restart preparation routine 
sets bit 5 in byte JCTRSWl of the JCT; this 
indicates to the termination routines that 
all NEW data sets are to be deleted, and 
OLD data sets are to be kept. If a check- 
point restart is to occur, the routine sets 
bit 4 in JCTRSWl; this indicates that all 
data sets are to be kept. After the 
restart information has been placed in the 
JCT, the restart preparation routine 
requests special disposition of data sets. 
Control returns to the step termination 
control routine. 

If no restart is possible, and if the 
step failed with either a user or a system 
abnormal termination (bit of the TCBFLGS 
field is on) , the step termination control 
routine sets the JCTABEND and the SCTABEND 
bits. Setting these bits causes the job 
scheduler to bypass all the following steps 
unless either the COND=ONLY or the COND= 
EVEN parameter specifies execution after 
abnormal termination. If any other failure 
has occurred, such as an allocation failure 
or the issuing of a CANCEL command, the 
step termination control routine sets the 
job failed bit (INCMSTS) in the JCT, and 
the job scheduler will not execute any 
other step of the job. 

The step data set driver routine is then 
entered. Whenever the problem program has 
abnormally terminated, this routine tests 
for an allocation message level of zero. 
If the programmer did specify zero in the 
JOB statement, the routine reconstructs the 
allocation messages and places them in the 
current system message block (SMB) . After 
this initial processing, the routine places 
the SIOT for each data set into a main 
storage work area and branches to the dis- 
position and unallocation subroutine. The 
loop through the data set. driver routine 
and the disposition and unallocation sub- 
routine is then repeated for each SIOT. If 
the JOB statement specified an allocation 
message level of one, or if an abnormal 
termination occurred, the data set driver 
routine places, in the current SMB, ter- 



mination data set disposition messages for 
each data set in the step. 

When all data sets have been processed 
by the disposition and unallocation subrou- 
tine, the problem program TIOT is released. 
Control is then passed to the job statement 
condition code routine, unless the job is 
to restart; in this case, control is passed 
to the user's accounting routine. 

The job statement condition code routine 
(Chart 50) processes condition codes speci- 
fied in the JOB statement. If upon entry 
it is found that there were no condition 
codes specified, control is passed to the 
user's accounting routine. If there were 
condition codes specified, the job state- 
ment condition code routine compares each 
condition code in the JCT with the step 
completion code of the previous step, which 
appears in the SCT. Up to eight conditions 
for each step are checked; any additional 
condition codes are ignored. If any of the 
condition operators are satisfied by the 
codes, the job- failed indicator in the JCT 
is updated to indicate that the job failed; 
the message subroutine is used to issue a 
message to the programmer, and the WTO 
macro instruction is used to issue a mes- 
sage to the operator. Control is then 
passed to the user's accounting routine. 

From the user's accounting routine con- 
trol passes to the step termination exit 
routine (IEFW22SD). This routine stores 
the SCT in the job queue, updates the LCT, 
and writes the last terminate SMB to the 
job queue. It then exits to the 
interpreter/initiator interface module 
(IEFSD002) for return to the interpreter or 
the initiator. 



JOB TERMINATION ROUTINE 

The job termination routine (Chart 51) per- 
forms its functions when an entire job has 
been executed and step termination for its 
last step has been completed. It consists 
of four major routines: 

• Job termination control routine. 

• Release job queue routine. 

• Disposition and unallocation 
subroutine. 

• User's accounting routine (if included 
in the configuration) . 

Control is passed to the job termination 
control routine from the step termination 
routine . 

The job termination control routine de- 
termines if a passed data set queue exists 
and, if so, places each block into main 
storage work area and tests for unreceived 
data sets. (An unreceived data set is a 



Initiator/Terminator 59 



passed data set to which no reference is 
made after PASS is specified.) When an 
unreceived data set is found, entry is made 
to the disposition and unallocation subrou- 
tine. When all unreceived data sets have 
been processed, or if no passed data set 
queue exists, the job termination control 
routine passes control to the accounting 
routine, if there is one. As in step ter- 
mination, if the allocation message level 
is one (if the job statement parameter is 
"MSGLEVEL=(x,l)"), or if an abnormal ter- 
mination has occurred, final disposition 
messages describing the data sets handled 
by job termination are placed in the cur- 
rent SMB. 



tine releases the auxiliary storage space 
(or, if the resident job queue option was 
selected during system generation, the main 
storage space) occupied by all control 
tables for the job. If the job notifica- 
tion switch is on, the message 



IEF40UI jobname ENDED 

is written on the console device. This 
message is not issued in any case where the 
job was terminated abnormally. If the job 
was terminated because of a JCL error in 
any but the first job step, the WTO macro 
instruction is used to issue the message: 



When the accounting routine returns, or 
if there is none, the completed job's con- 
trol tables are removed from the system by 
the release job queue routine. This rou- 



IEF452I jobname J03 FAILED - JCL ERROR 

on the console. Control is then passed to 
the interpreter control routine. 



60 



Appendix A: Major Subroutines 



Table Store Subroutine 



The table store subroutine stores records 
into and retrieves records from the SYS1. 
SYSJOBQE data set. This data set may be 
either completely on a resident direct 
access device, or partly in main storage 
and partly on such a device, depending on 
whether the resident job queue (RESJQ) 
option was specified during system genera- 
tion. The table store subroutine provides 
the following services on request: 

• Supplies the requester with an auxi- 
liary storage address or addresses into 
which records may later be written. 

• Writes a record (or records) onto SYSl. 
SYSJOBQE locations specified by the 
requester. 

• Reads a record (or records) from SYSl. 
SYSJOBQE locations specified by the re- 
quester . 

The table store subroutine is used by job 
mcinagement routines to temporarily store 
tables and work areas that need to be com- 
municated from one routine to another. 

As part of the preparation for system 
generation (initializing system data sets), 
a specified number of tracks is assigned to 
data set SYSl. SYSJOBQE. During IPL, this 
extent is formatted for 176-byte records. 
(All records handled by the table store 
subroutine are 176-byte records.) 

If the resident job queue option was 
selected during system generation, a speci- 
fied number of records, starting at the 
beginning of the data set, will occupy a 
mciin storage area, thus saving time when 
tcibles are to be stored or retrieved. If 
there is room within this area of main 
storage, the I/O supervisor causes the rec- 
ords to be moved in response to the table 
store subroutine's WRITE macro instruction; 
if desired records are stored in this main 
storage area, the I/O supervisor causes 
them to be moved in response to a READ 
meicro instruction. 

The calling routine may request one of 
five functions. These are: 

• Assign and start . The requested number 
of track addresses are assigned, begin- 
ning with the first assignable address 
in the extent. 



Assign . The requested number of track 
addresses are assigned, beginning with 
the next available address in the 
extent . 



• Write and assign . The requested number 
of records are written, and the 
requested number of addresses are 
assigned. 

• Write . The requested number of records 
are written. 

• Read . The requested number of records 
are read. 



Before passing control to the table 
store subroutine, calling routines must 
construct a parameter area (see Figure 31) 
and place its address into general register 
1. Calling routines must also provide a 
QMPCA-QMPEX list (see Figure 32) . Figure 
33 shows the parameters required when a 
function is requested. The parameters are: 



QMPOP . A function code that indicates 
the function to be performed. 

QMPCM . The number of records (maximum 
of 15) for which addresses are to be 
assigned. 

QMPNC. The number of records (maximum 
of 15) to be stored into or retrieved 
from SYSl. SYSJOBQE. 

QMPCL . The beginning address of the 
QMPCA-QMPEX list. 

QMPCA . The main storage address from 
which the record is to be read or into 
which the record is to be written. 



QMPEX . The record address (in SYS- 
JOBQE) into which the record is to be 
written or from which the record is to 
be read. 



An entry in the QMPCA-QMPEX list is 
required for each record when a read or 
write function is requested. For assign 
functions, the table store subroutine 
returns the assigned track addresses in 
these parameters. The first assigned rec- 
ord address is placed into QMPCA1, the 
second into QMPEX1, and the remaining rec- 
ord addresses into ...QMPCAn, QMPEXn. 



Appendix A: Major Subroutines 61 



Byte r 




12 



16 



20 



24 



28 



QMPOP 



r T T . 

32 |QMPCM|QMPNC| 

L X_ X- 



QMPCL 



-- 1 



■H 



Figure 31. Table Store Subroutine Parame- 
ter Area 



Disposition and Unallocation 
Subroutine 

The disposition and unallocation subroutine 
is divided into two sections s disposition 
processing, which performs data set dispo- 
sitions specified in the DISP field of DD 
statements, and device availability pro- 
cessing, which makes the associated devices 
available for allocation to the next job 
step. Control enters the disposition and 
unallocation subroutine from the step ter- 
mination routine and the job termination 
routine. In all cases, disposition pro- 
cessing is performed, followed by device 
availability processing. A message con- 
taining the data set name, its disposition, 
and the serial numbers of the volume (or 
volumes) in which it is contained, is 
always issued to the programmer. 



Byte r t 

| QMPCA1 j 

4 j QMPEX1 j 

L . J 

r ■ ■ 1 

n | QMPCAn | 

y _ H 

n+4| QMPEXn | 

L , J 

Figure 32. QMPCA-QMPEX List 



| Input Parameters | 

\r t t t t t \ 

I Q I Q I Q I Q I Q I Q I 

j H j H j H | H j H j H j 

|P | P | P | P | P | P | 

JO j C | N j C j C j £ j 

IP | M | C | L | A | X | 



Assign and start | 00 i X j j X j X | X j 

Assign | 01 | X | | X | X | X | 

Write and assign | 02|X|X|X|X|X| 

Write I 03 | | X | X | X | X | 

Read | 04 | | X | X | X | X | 

- L X X X X — -X J 

Figure 33. Table Store Subroutine Parame- 
ter Requirements 



ENTRY FROM THE STEP TERMINATION ROUTINE 

When the step termination routine passes 
control to the disposition and unallocation 
subroutine (Chart 52) , it provides pointers 
to the TIOT and SIOT of a data set. The 
disposition field of the SIOT indicates the 
disposition to be performed. 



Disposition Processing 

Dispositions that may have been specified 
in the DD statement are DELETE, KEEP, PASS, 
CATLG, and UNCATLG. 

If the disposition is DELETE and the 
data set is cataloged, and if the JFCB 
housekeeping routine obtained volume infor- 
mation from the catalog, the UNCATALOG 
macro instruction is issued. If the de- 
vices containing the data set are not 
direct access devices, no SCRATCH macro 
instruction is issued. If the devices are 
direct access devices, a check is made to 
determine if the SCRATCH macro instruction 
can be issued. It can be issued if one of 
the following conditions exists: 

• All volumes containing the data set are 
mounted. 

• All volumes containing the data set are 
not mounted, but at least one dismount- 
able volume is mounted. 

If neither of these requirements is met, an 
error message is issued. 



62 



If the disposition specified in the DD 
statement is KEEP, the disposition subrou- 
tine issues a message to the operator and 
passes control directly to device availa- 
bility processing. 

If the disposition is PASS, no message 
is issued to the operator. Control is 
passed to device availability processing. 

If the disposition is CATLG, the dispo- 
sition subroutine determines if the data 
set is already cataloged. If not, the 
CATALOG macro-instruction is issued. If it 
is cataloged, a further check is made to 
determine whether its volume list was 
altered during execution of the job step. 
(The data management OPEN, CLOSE, or EOV 
routines may have altered, the volume list.) 
If the volume list was altered, a RiCATALOG 
mcicro instruction is issued. If the volume 
list was not altered, control passes 
directly to device availability processing. 

An UNCATLG disposition causes an UNCATA- 
LOG macro instruction to be issued. 

If a disposition is not specified in the 
DD statement, but if the SYSOUT keyword is 
specified, control returns directly to the 
step termination routine. 

When neither a DISP nor a SYSOUT keyword 
is specified in the DD statement a check is 
made to determine if an entry for the data 
set exists in the passed data set queue 
(PDQ), and if so, the status indicator in 
that entry is checked. If the status is 
old (the data set was created by a previous 
step or job) , a KEEP disposition is 
assumed. If the status is new, a DELETE 
disposition is assumed. If there is no 
entry for the data set in the PDQ, the sta- 
tus indicator in the step input/output 
table is examined, and as in the conditions 
for a PDQ entry, either a. KEEP or DELETE 
disposition is assumed. 

If the job step has been abnormally ter- 
minated, the conditional disposition (third 
parameter for DISP keyword) is honored 
instead of the normal disposition (second 
parameter) . Possible conditional disposi- 
tions are: DELETE, KEEP, CATLG, and 
UNCATLG. If one of these specifications is 
paresent, it is resolved in the same manner 
as normal disposition. If there is no spe- 
cification for the conditional disposition, 
the normal disposition will be honored (as 
above) . 



Device Avail ability Processing 

After the disposition of a data set is 
determined and processed, the device avail- 
ability portion of the disposition and 
unallocation subroutine is entered. First, 



a check is made to determine if the opera- 
tor has issued a VARY or UNLOAD command. 
If so, the status of the device is changed, 
and a message indicating that the command 
was processed is issued to the operator. 

When there are no pending VARY or UNLOAD 
commands or when these commands have been 
processed, tests are made to determine if 
any of the volumes containing the data set 
can be dismounted. Dismount messages are 
issued for any that can be dismounted. The 
following volumes are not dismountable: 

• Public volumes. 

• Volumes on system residence or RESERVED 
devices. 

• Volumes on permanently resident 
devices. 

• Volumes whose status is RETAINED. 

• Volumes on system input or system out- 
put devices. 

• Volumes containing data sets with PASS 
dispositions . 



The addresses of appropriate UCBs are 
obtained from the TIOT, and the status of 
the devices used is changed to ALLOCATABLE. 
When device availability processing of a 
data set is completed, the disposition and 
unallocation subroutine returns control to 
the step termination routine. 



ENTRY FROM THE JOB TERMINATION ROUTINE 

When the job termination routine passes 
control to the disposition and unallocation 
subroutine (Chart 52), a test is made for 
special disposition processing. If the 
step is to be restarted, the disposition of 
OLD data sets is changed to KEEP; the dis- 
position of NEW data sets is changed to 
KEEP for a checkpoint restart, to DELETE 
for a step restart. 

Only two types of data sets remain to be 
processed: 

• Data sets that were passed but were not 
received. 

• Data sets contained on volumes that 
were retained but to which reference 
was never made. 

Each time the job termination routine 
passes control to the disposition and unal- 
location subroutine, it passes a pointer to 
an entry in the PDQ describing a data set 
that was passed but not received. 



Appendix A: Major Subroutines 63 



If the job has been abnormally ter- 
minated (job failed bit is on), the condi- 
tional disposition stated for this data set 
must be honored. The SIOT for this data 
set is read into main storage, and the con- 
ditional disposition checked. The speci- 
fied disposition is then processed in the 
same manner as when entry is from the step 
termination routine. 

If no conditional disposition was speci- 
fied, only two dispositions are possible: 
DELETE and KEEP. If the data set existed 
before the first time it was passed in this 
job, a KEEP disposition is assigned; other- 
wise, a DELETE disposition is assigned. 



Th€:se dispositions are processed in the 
same manner as when entry is from the step 
termination routine. 



When the job termination routine has 
scctnned all PDQ entries for a job, it 
enters the disposition and unallocation 
subroutine , but provides no pointer to a 
PDQ entry. The disposition and unalloca- 
tion subroutine scans all UCBs and issues 
dismount messages for any dismountable 
volumes on devices whose UCB contains the 
current job identification. Control is 
then returned to the job termination 
routine. 



64 



Appendix B: Tables and Work Areas 



This appendix contains descriptions and 
formats of major tables and work areas that 
are used by job management routines and 
that are not described in the body of this 
publication. Most table entries are self- 
explanatory. Those entries that require 
further explanation are described with each 
table. Tables are shown here four or eight 
bytes wide for convenience, but are not 
necessarily drawn to scale. 



The length of each field of the tables is 
given in bytes in the upper right corner of 
the field, and each table is limited to a 
176-byte length by convention. The tables 
are presented in the following alphabetical 
or der : 

Account control table 

Device mask table 

Dsname table 

Generation data group (GDG) bias count 

table 
| In- Stream procedure work area 

Job control table 
| Job file control block 

New reader or writer table 

Passed data set queue 

Step control table 

Step input/output table 

System message block 

Volume table 



Auxiliary storage addresses appearing in 
the tables are relative track addresses 
(TTRs) , in relation to the beginning of the 



SYS1.SYSJ0BQE data set, whether the table 
is stored into main storage or into auxi- 
liary storage by the table store subroutine 
and the I/O supervisor. All TTRs are three 
bytes long and begin on a fullword boun- 
dary. The format of all storage addresses 
appearing in the following tables is: 





T - 


— T" 






| Relative 


2 | Relative 


11 


Table ID 


11 


| track 


| record 


1 


or 


1 


| address 


| address 


1 


Not used 


1 


L 


j. 


-L- 




i 



Account Control Table 

The account control table (ACT) , shown in 
Fiqure 34, contains accounting information 
obtained from JOB and EXEC statements. 
This information is made available to user 
accounting routines. One or more ACTs are 
created for each job. The job routine of 
the reader/interpreter creates one ACT for 
each JOB statement, and the execute routine 
creates an ACT whenever the accounting 
(ACCT) parameter with its subsequent infor- 
mation is specified on an EXEC statement. 
The "number of accounting fields" entry 
contains the number of elements of account- 
ing information specified in the ACCT para- 
meter of the EXEC statement, or in the 
first positional parameter of the JOB 
statement (see IBM System/36 Operating 
System: Job Control Language Reference ) . 
ACTs are stored by the table store 
subroutine. 



Offset 
Hex Dec 



1C 



28 



T 



Storage Address of ACT 



Table ID =01 



Storage Address of Next ACT 



20 



Programmer's Name if JOB ACT; Blanks if Step (EXEC) ACT 



Time Required to run Job or Step 



Other Accounting Fields ( If any ) 



No. of 1 

Accounting 

Fields 



Length of 1 

Nth Accounting 
Field 



Length of 1 

First Accounting 
Field 



Variable 



First Accounting Field 



i 



Variable 



Nth Accounting Field 



J 



Figure 34. Account Control Table 



Appendix B: Tables and Work Areas 65 



Device Mask Table 

The device mask table (DMT), shown in 
Figure 35, is built at SYSGEN time, and 
permits system access to the unique group 
of I/O devices represented by one unit 
name. This group may consist of any combi- 
nation of device types or device numbers, 
and will be unique for any user's system. 
The user may determine specific device 
assignment bit patterns for his system from 
a symbolic listing taken after system 
generation. There is one table entry for 
each esoteric or generic name or for each 
direct access device. Within each entry, 
the bit pattern signifies the devices asso- 
ciated with a particular device name. The 
bit pattern within any entry is extended in 
fullword increments when the number of de- 
vices exceeds 32 or a multiple of 32. The 
entry status byte, bit 0, if 1, signifies 
that the group of devices is a homogeneous 
group. 



r T 1 

| Numbers of 2 | Pointer to mask 2| 
I entries | of direct access j 
j | devices j 

l ± j 

Entry (typical) 

r t t t 

| 1|DMT 1 | Number of 2| 
j Not used j entry j possible | 

j j status | devices | 

h ± x „__ .| 

I *l 

| Device type | 

I I 

j. _ .j 

I 4| 

| Bit pattern of | 

| possiole devices j 



Figure 35. Device Mask Table 



At SYSGEN time, device type codes are 
obtained from tables internal to the SYSGEN 
program, or are generated, and placed in 
the? device mask table. The DMT is used as 
a source of device-type codes for the 
device name table (DNT) (see IBM System/360 
Operating System: System Control Blocks ) . 
During device allocation, these codes are 
us€;d as search keys to gain access to the 
DMT for device groups or single devices. 



DSNAME Table 

The dsname table, (see Figure 36), contains 
the volume reference data set names for one 
step as found in the DD statement. The 
table is created by the DD routine of the 
interpreter for each job step. One entry 
is made in the dsname table for each DD 
stcitement containing the VOLUME=REF=dsname 
parameter. 



The step control table (SCT) points to 
the. dsname table, and also contains a count 
of the total bytes occupied in the dsname 
table by dsnames for the current step. The 
SIOT for each data set also contains a 
pointer to the dsname table entry for this 
SIOT before volume resolution and a pointer 
to the volume table (VOLT) after volume 
information has been resolved. 



The dsname table is used by the JFCB 
housekeeping routine of the initiator/ter- 
minator to retrieve volume information con- 
cerning data sets referred to by data set 
nane in the DD statement VOLUME=REF parame- 
ter. The dsname table is fragmented into 
176-byte blocks before being stored, prior 
to job step execution. 



— r" 
3 I 



_ T - 
11 



._ T 

3| 1 
| Not 
j used 



Storage address of 
dsname table 



Table 
ID=07 



Chain address 



Dsname 1 (1 through 44--JDyte length) 


____ X ., 

Variable | 

j 


• 


Dsname N 


Variable | 
1 
1 



Fiaure 36. Dsname Table 



66 



Generation Data Group Bias Count 



The generation data group (GDG) bias count 
table, shown in Figure 37, makes GDG infor- 
mation available to the data management 
portion of the system, and allows the user 
to refer to a particular GDG member by the 
same number in different steps of the same 
job. The programmer refers to GDG members 
serially from the start of a job, but data 
management refers to GDG members serially 
from the last-cataloged member. The last 
member cataloged in a previous job, if any, 
is referenced as member number zero. The 
programmer will refer to the first new data 
set in the present job as number +1. This 
table is used to convert a reference that 
is relative to the start of the present 
job, as specified by the programmer, to a 
reference that is relative to the last- 
cataloged member, as required by data 
management. 

An entry to the GDG bias count table is 
created by the GDG single processing rou- 
tine of JFCB housekeeping when a single GDG 
is requested by the user. When a step is 
completed by JFCB housekeeping, the JFCB 
housekeeping control routine transfers the 
GDG work bias byte to the GDG bias byte 
location if the value of the work byte is 
greater than that of the bias byte. In 
subsequent steps of the same job, any 
reference by the programmer to a GDG member 



will be decremented by the value of the 
bias count, which is contained in the GDG 
bias byte, to obtain a corrected member 
number for data management reference. 



Offset- 
Hex Dec 




C 12 



30 48 



34 52 



5C 92 



84 132 



AG 172 



3 
Storage Address of This Table 


1 
Not Used 


3 
Storage Address of Next Table 


1 
Not Used 


4 
Number of Entries in This Table 


3 i 

" GDG Dsname ~ 


2 

GDG Bias Byte 


2 
GDG Work Bias Byte 


40 - 
Second Entry — 


40 
~ Third Entry - 


40 
Fourth Entry ~ 


4 
Not Used 



Figure 37. GDG Bias Count Table 



Appendix B: Tables and Work Areas 67 



Iii-Stream Procedure Work Area 



The 3 52 -byte work area shown in Figure 38 
functions as two 176-byte halves in pro- 
cessing procedures found in the job stream. 
The first half, the work buffer, is used in 
compressing and expanding procedure state- 
ments. The second half, the directory, is 
used to store from one to fifteen entries. 



Offset 
Hex Dec 



each containing the name of a procedure and 
the auxiliary storage address of the first 
job queue record of that procedure. Direc- 
tory entries are created as in-stream pro- 
cedures are encountered in a job input 
stream and processed, storage for the area 
is obtained when the first procedure is 
processed, and is freed when the next JOB 
statement is read. 



BO 



176 



CO 



192 



158 



344 



WKTTR 
Auxiliary Storage Address of next record in the compressed 
procedure. Zero if no next record exists. 



WKQMPAPT 
Pointer to the Queue Manager Parameter Area 
for in-stream procedure processing 



168 



WKRECORD 
Area for Compression and Expansion 



WKPTR1 
Auxiliary Storage Address (from Assign/Start) used to write 
directory entry to job queue 



1 
WKCT 
Number of 
Directory Entries 



WKPTR2 
Auxiliary Storage Address of next available 
job queue record 



WKPROCNl 
Name of the first in-stream procedure encountered, right-padded with blanks 



WKTTR 1 
Auxiliary Storage Address of first job queue 
record of first in-stream procedure 



154 



Space for 14 more procedure names and addresses 



Reserved 



•Figure 38. In-Stream Procedure Work Area 



68 



Job Control Table 



| Message Level (JCTJMGLV-1/2 byte) i 



The job control table (JCT), shown in 
Figure 39 , is created by the job routine of 
the reader/interpreter upon receipt of a 
job statement. It contains information 
taken from the job statement, and also 
storage addresses of major tables. After 
all steps within a job have been 
interpreted, the JCT is stored by the in- 
terpreter. The JCT is used by the 
initiator/terminator in preparing a job 
step for execution, and is stored by the 
step initiation routine of the initiator/ 
terminator, before control is passed to the 
job step. 



The JCT includes the following entries: 



Bit contains if message level for allo- 
cation is 0. 

Bit contains 1 if message level for allo- 
cation is 1. 

Bits 2-3 contain 00 if message level for 
JCL is 0. 

Bits 2-3 contain 01 if message level for 
JCL is 1. 

Bits 2-3 contain 10 if message level for 
JCL is 2. 

The second half -byte, JCTJPRTY (Job priori- 
ty) is not used in the primary control 
program . 



J ob Serial Number (JCTJSRNQ) ; Always con- 
tains 1 in the primary control program. 



Job Status Indicators (JCTJSTAT) : 

Bit : The job library indicator contains 
a 1 if a JOBLIB DD statement is 
included with the job,. 

Bit 1: is set to 1 if the job is flushed 
because of an error condition. 

Bit 2 : is set to 1 if the job step is can- 
celled by condition codes. 

Bit 3: is set to 1 if the job step is 
flushed because of an error 
condition. 

Bit 4 : The ABEND indicator contains a 1 if 
one or more steps have been ter- 
minated through the ABEND routine. 

Bit 5: The job-failed indicator contains a 
1 if an error condition caused the 
job to be terminated. 

Bit 6 : is set to 1 if the job includes a 
cataloged procedure. 

Bit 7 : is set to 1 for a job which does 
not require the mounting of 
volumes; it contains if volume 
mounting is necessary. 



Restart Switches : 

JCTRSW1 : 

Bit 1 contains a 1 when step termination 
has begun. 

Bit 3 contains a 1 if a checkpoint has been 
taken for the step. 

Bit 4 contains a 1 for a checkpoint/restart 
to be done. 

Bit 5 contains a 1 for a step restart to be 
done. 

Bits 6 and 7 must be zero. 

JCTRSW2 : 

Bit contains a 1 if a SYSCHK DD statement 
is present. 

Bit 1 contains a 1 if the RD parameter is 
other than NC. 

Bit 2 contains a 1 if the RD parameter is 
NR. 

Bit 3 contains a 1 if the RD parameter is 
NC or RNC. 

Bit 4 contains a 1 if the RD parameter is R 
or RNC. 

Bit 7 contains a 1 if module IEFDSDRP has 
encountered an unrecoverable error. 



Appendix B: Tables and Work Areas 69 



Offset 
Hex Dec 





JCTDSKAD 
Storage Address of Job Control Table 



JCTIDENT 
Table ID =00 



JCTJSRNO 
Job Serial 
Number 



JCTJSTAT 
Job Status 
Indicators 



JCTJMGPO 
Message Class 



JCTJMGLV 
Message / 

i i / Job 
Level yl , . 
Priority 

JCTJPRTY 



JCTJNAME 
Jobname (padded with blanks) 



10 16 



18 24 



20 32 



28 40 



30 48 



38 56 



50 80 



58 88 



60 96 



68 104 



70 112 



80 128 



A0 160 



A8 168 



Not Used in the Primory Control Program 



JCTPDQDA 
Storage Address of PDQ 



JCTBCTDA 
Storage Address of GDG Bias Count Table 



JCTSDKAD 
Storage Address of First Step Count Table 



JCTSMBAD 
Storage Address of First System Message Block 



JCTACTAD 
Storage Address of Job Account Control Table 



JCTDSSBA 
Storage Address of First Data Set SYSOUT Block 



JCTDSBAD 
Storage Address of Last Data Set SYSOUT Block 



JCTSMBID 
Key of Track ID for SMBs 



JCTJDPCD 
First Job Condition Code 



JCTJDPOP 
First Job Condition Operator 



28 



Seven Additional Jjb Codes and Operators 



JCTRSW1/JCTRSW2 
Restart Switches 



Not Used in the Prima y Control Program 



JCTSTIOT 
In Primary Control Program, Storage Address 
of SCT for Step to be Restarted 



JCTCDEVT 
Device Type of Checkpoint Data Set 



JCTCKTTR 
Storage Address of JFCB for Checkpoint Data Set 



JCTNTRK 1 

No. of Tracks 
on SYS1 JOBQE 
Used by Job 



JCTNRCKP 
No. of Checkpoints 



JCTVOLSQ 
Vol. Seq. 
No. of Chkpnt 
Data Set 



Reserved 



JCTSSTR 
Storage Address of SCT for First Step to be Run 



JCTSTAT2 1 
Additional 
Status 
Indicators 



JCTCKIDL 
Length of 
Chkpt ID 



16 



Checkpoint ID (Left-Juslified, From 1-16 Bytes) 



33 



Not Used in Primary Control Prograr 



Reservec 



•Figure 39. Job Control Table 



70 



Job File Control Block 

A job file control block (JFCB) is con- 
structed and written on auxiliary storage 
by the job management routines for each 
ddname specified in a job step. A JFCB is 



brought into main storage when a DCB with 
the corresponding ddname is opened. Infor- 
mation in a JFCB may be modified during 
OPEN. Figure 40 shows the format of the 
JFCB. See Figure 12 for the fields used 
for ED statement parameter dispositions. 



J 



1 



~o (0) 



JFCBDSNM 
Data Set Name 



4.44 (2C) 



JFCBELNM 
Element Name, Generation Number 



52 (34) JFCBTSDM 

Job Mgt — Data Mgt Interface 



53(35) 



JFCBSYSC 
System Code 



66 (42) JFCBLTYP 

Label Type 



67 (43) JFCBOTTR 

Buffer Offset, Auto Step Restart 



1 



DASD, MOD: Continued 

68(44) Tape: JFCBFLSQ - File Sequence No. 



70 (46) 



JFCBVLSQ 
Volume Sequence Number 



72 (48) 



JFCBMASK 
Data Management Mask 



80 (50) 



JFCBCRDT 
Data Set Creation Date 



83 (53) JFCBXPDT 

Expiration Date 



Continued 



86(56) JFCBIND1 

Indicator Byte 1 



87(57) JFCBIND2 

Indicator Byte 2 



(58) JFCBUFNO, JFCBUFRQ 
No. of Buffers 



89(59) JFCBHIAR, 

JFCBFTEK, JFCBFALN 



90 (5A) 



JFCBUFL 
Buffer Length 



92 (5C) JFCEROPT 

Error Option 



93 (5D) 



94 (5E) 



Device Characteristics 



JFCDEN 
Tape Density 



95 (5F) JFCLIMCT 

BDAM: Search Limit 



BDAM: Continued 

96 (60) MOD Data Set: Previous Track Balance 



98 (62) 



JFCDSORG 
Data Set Organization 



100 (64) JFCRECFM 

Record Format 



101 (65) JFCOPTCD 

Option Code 



102 (66) 



JFCBLKSI 
Maximum Block Size 



104 (68) 



JFCLRECL. 
Logical Record Length 



106 (6A) JFCNCP 

No. of Channel Programs 



107 (6B) JFCNTM 

No. of Tracks 



•Figure 40. Job File Control Block (Part 1 of 2) 



Appendix B: Tables and Work Areas 71 



Segments 

Slormal 108 Segment 



108 (6C) 



JFCRKP 
Relative Key Position 



109 (6D) JFCCYLOF 
No. of Tracks 



110 (6F) JFCDBUFN 
Reserved 



112(70) JFCINTVL 

Seconds of Delay 



UCS Segment 



108 (6C) 



JFCUCSID 
UCS Image Namo 



112(70) JFCUCSOP 

UCS Image Operation 







113(71) JFCCPRI 

Send/Receive Priority 


114 (72) 


JFCSOWA 
Size of Work Area 


116 (74) 


Reserved 


117(75) JFCBNVOL 

No. of Serial Numbers 


118(76) 


: 






JFCBVOLS 



Volume Serial Number 















148 (94) 


JFCBEXTL 
Reserved 




149 (95) JFCBEXAD 

Relative Track Address for First JFCB Extension 


152 (98) 




JFCBPQTY 
Primary Quantity of Direct-Access Storage 


155 (9B) JFCBCTRI 

Space Parameters 


156 (9C) 




JFCBSQTY 
Secondary Quantity of Direct-Access Storage 


159 (9F) 

Reserved 


160 (A0) 




JFCBDQTY 
Direct-Access Storage Required for Index 


163 (A3) JFCBSPNM 

Split Cyl: Address of JFCB 


Continued 


166 (A6) JFCBABST 

Relative Address of First Track 


168 (A8) 




JFCBSBNM 
Main Storage Address of JFCB - Suballocate 


171 (AB) JFCBDRLH 

Data Block Length 


Continued 


174 (AE) JFCBVLCT 
Volume Count 


175 (AF) JFCBSPTN 

Split Cyl: No. of Tracks 



•Figure 40. Job File Control Block (Part 2 of 2) 



72 



Master Scheduler Resident Data Area 

The master scheduler resident data area is 
a 196-byte portion of the nucleus used as a 
communications area between the master 
scheduler and the rest of the operating 
system. (See Figure 41.) The CVTMSLT 
field of the communication vector table 
contains its address. In the PCP confi- 
guration of the operating system, the first 
136 bytes comprise a four-byte control pro- 
gram header and a 132-byte buffer into 
which console commands are read. The buf- 
fer's first four bytes contain a V-type 
header address, and the last two bytes mark 
the end of the buffer; console messages may 
therefore occupy a maximum area of 126 
bytes . 

The remaining sixty bytes of the master 
scheduler resident data area constitute a 
system independent space known as the mas- 
ter common area. The two message communi- 
cation fields contained within it are each 
used for passing indicators between two 
message modules. The command pointer 
always points to the current console com- 
mand; the command is initially read into 
the remote command buffer at offset 8 in 
Figure 41, but it is moved out of the mas- 
ter scheduler resident data area into the 
local buffer for processing. 

Preceding the master common area's con- 
trol blocks, addresses, and pointers are 
six bytes of switches and flags: 

• Initialization Switches 



Bit 


Definition 


Name 





IPL Switch 


MSNIP 


1 


Sysout IPL 




2 


Sysout Job Start 




3-4 


Reserved 




5 


34 security Bit 


MSCURE34 


6 


Queue Initialized 


MSQNIP 


7 


Procedure Catalog 
Initialized 


MSPNIP 


PCP 


System Exclusive Flags 




Bit 


Definition 


Name 





Console Flag 


MSCONFLG 


1 


Cancel Flag for 
ABENDT 


MSCANFLG 


2 


Rollout Flag 


MSROLFLG 


3 


Spinoff Flag 
(Cancel) 


MSSO 


4 


Display Dataset Name 


MSSSDSN 


5 


Display Space 


MSSSPACE 


6-7 


Reserved 





Note: Bits 4 and 5 may be used by other 
control programs . 



• Pending Flags 

Definition 



2 Command Move MSCMC 
Completed 

3 Interpreter Command MSICR 
Completed 

4 System Input Control MSSYN 
Purge Request 

5 System Output Con- MSSYT 
trol Purge Request 

6 Elank Start Pending MSBSP 
(REQ=1, START 

BLANK=0) 

7 Console Command MSCCS 
Suppressed 



ECB 


Flags 




Bit 


Definition 


Name 





External Interrupt 


MSEXT 


1 


Write to Operator 


MSWTO 


2 


Write to Log 


MSWTL 


3 


Pending Console 
Attention 


MSATTN 


4 


System Input 


MSYSIN 


5 


System Output 


MSYSOUT 


6 


Master Command 
Routine 


MSMCR 


7 


Summary Bit, Vary 
UCB Scan Required 


MSSUM 


Status Flags 




Bit 


Definition 


Name 



Master Initializa- 


MSINLSW 


tion Switch (IPL) 






(or) 




MSSSSIPL 


WTO Pending 


MSWRPEN 


Console Usage, Prin- 


MSNUPSW 


cipal or Alternate 




Log Purge Request 


MSWRLOG 


Reader End of File 


MSREOF 


(or) Start Reader 






(or) 




MSSRDR 


New Reader Pending 


MSNRP 


New Writer Pending 


MSNWP 


(or) 






(or) 


New Writer Pending 


MSYOUT 


(MODIFY) 




Job Notification 


MSJNF 


Flag (1=YES) 





Bit 

1 



IPL Date 
Partition Busy 



Name 
MS DATE 

MSPNB 



Fetch 


Flaqs 




Bit 


Definition 


Name 





Named Fetch 


MSNMF 


1 


Defer Current Com- 
mand Execution 
Sequence 


MSCSD 


2 


TCB Tree Trace Fetch 
(LOCATE) 


MSTTT 


3 


Auxiliary Fetch 
Given 


MSFAX 


4 


Reply Bit to Request 
Attention 


MSREPLYB 


5 


Pseudo-Sysout Flag 


MSPSDT 


6 


Reserved 




7 


Queue Hold-Release 


MSQHR 



Appendix B: Tables and Work Areas 73 



Offset 
Hex Dec 


4 4 



4 
Control Program V-Type Header 




4 
V-Type Buffer Header Region 








126 
Remote Command Buffer " 






End-of Buffer Character 


Second End of Buffer Mark 




Ini 


tialization Switches 


PCP System Exclusive Flags 


Pending Flags 


ECB Flags ] 


t 

Mast 
Com 
Area 


k 


Status Flags 


Fetch Flags 


8 








Command Verb 






8 








Normal Message C 


ommunication Field 






2 

Error Message Communication Field 




4 
Command Pointer — Always Points to Console Command 


er 


4 
Master Scheduler ECE> 




Address of ECB in Selected Job Queue Entry of Job Using Console 




4 
ECB for Allocation Internal Use 




4 
Pointer to Primary UCB 




4 
Pointer to Alternate UCB 




4 
V-Type address of Pseudo - Disable Switch 




4 
V-Type address of Problem Program TCB 




V-Type address of Highest Priority TCB 


f 



88 136 

8C 140 

90 144 

98 152 

A0 160 

A4 164 

A8 168 

AC 172 

BO 176 

B4 180 

B8 184 

BC 188 

CO 192 

Figure 41. Master Scheduler Resident Data Area 



74 



New Reader or Writer Table 



The new reader or writer table (NRWT), 
shown in Figure 42, is a control block that 
contains OPEN requirements for reader and 
writer routines. At initial program load 
time, the table is written onto auxiliary 
storage. The table is read into main 
storage from auxiliary storage; and is used 
by the interpreter and SYSOUT routines. 
Each entry (except jobname) consists of an 
active section and an inactive' section. 
Whether the lower or higher order part of 
the entry is active is indicated by a 1 in 
bit of the flag 1 byte in the active sec- 
tion. When a NRWT entry is active, the 
data set has been opened, and the device 
indicated by the applicable UCB pointer is 
active. The currently inactive section of 
the entry receives information from new 
START commands. The table is always avail- 
able in the SYS1.SYSJ0BQE data set. 



Bit 







Eit 


1 




Bit 


2 




Bit 


3 




Bit 


4 




Eits 5- 


-7 



The bits in location Flags 1 have the 
following meanings : 



I/O active/inactive 

I/O jobname/no jobname 

Pending start 

Pending stop 

Separator /no separator 

Not used in primary control 

program 



The bits in location Flags 2 have the 
meanings: 



Bit Local flag 

Bit 1 I/O DSNAME/no DSNAME in START 

command 
2-7 Not used in primary control 

program 



Start Reader Entry 

r t t T 1 

I 3| 1| 2| 2| 
| Track address | Flags 1 | Flags 2 | UCB pointer | 
I | | (not used) | | 

j. + x + ., 

I 3| 1| 2| 2| 
| Track address | Flags 1 j Flags 2 | UCB pointer | 
| | j (not used) j | 

L _. . x x x j 

• • 

Jobname Entry 

• • 

r . 1 

I 8| 

| Jobname from START command | 

j of operator j 

L J 

Start Writer Entry 
(One entry for each possible active class-a maximum of eight) 

r ■ t 1 t t 1 

I 3| 1| 1| 1| 2| 

| Track address | Flags 1 | Flags 2 | Class | UCB pointer | 

I III name | | 

l _ . + + + x ., 

I 3| 1| 1| | 2| 

| Track address | Flags 1 | Flags 2 | Class | UCB pointer | 

| III name j j 

L . X X X X J 

• • 

Cataloged Procedures Entry 

r t x T 1 

I 3| 1| 2| 2| 
| Track address | Flags 1 | Flags 2 | UCB pointer j 
I I | (not used) | | 

j. _ x x x ^ 

I 3| 1| 2| 2| 

| Track address | Flags 1 | Flags 2 | UCB pointer j 

j j j (not used) | | 

L - X J X J 

Figure 42. New Reader or Writer Table 



Appendix B: Tables and Work Areas 75 



offset PDQ Directory Block 

Hex Dec 



I 



2C 44 



58 88 



84 132 



A8 168 



AC 172 



Dsname 1 



«[ 



offt.t PDQ Block 

Hex Dec 




44 



Dsname 2 



~L 



Dsname 3 



Number of 
Entries In 
Block 



44 



35 



Not Used 



Storage Address of PDQ Block 
for These Three Dsnames 



Storage Address of Next PDQ 
Directory Block (If Needed) 



Not Used 



Not Used 



PDQ Overflow Block 

o o I 



AC 172 



Space for 43 Additional UCB Pointers 



"1 



Storage Address of Next 
Overflow Block (If Needed) 



Not Used 



•Figure 43. Passed Data Set Queue Tables 



4 4 



8 8 



C 12 



34 £2 



38 lb 



B2 1 /8 



Current 

Step 

Number 



Current 
DD Number 



Terminate 
Work Area 



Storage Address of Current 
Job File Control Block 



Storage Address of Current 
Step Input/Output Table 



Number of 1 
UCB Ptrs 
Here and in 
Overflow 



Not Used 



Current 

Step 

Number 



40 



Space for ten 4-Byte Unit 
Control Block Pointers 



Storage Address of First 
Overflow Block ( If Needed ) 



Not Used 



112 



Space for two Additional PDQ Entries 



Not Used 



Passed Data Set Queue 



The passed data set queue (PDQ) , shown in 
Figure 43, contains information regarding 
previously processed data sets which have 
been passed from executed steps of the job, 
that may be referenced by subsequent steps 
of the same job. Each PDQ contains a set 
of tables, consisting of three types of 
blocks: the PDQ directory block, the PDQ 
block, and the PDQ overflow block (if 
required) . The PDQ directory block and the 
PDQ block are created by the initiator/ 
terminator JFCB housekeeping routine. The 
directory blocks are chained together with 
pointers, and each PDQ directory block also 
points to its respective PDQ block. If 
more than ten additional UCB pointers are 
needed for any one PDQ entry, one or more 
PDQ overflow blocks are added in a chain to 
each such PDQ block entry by allocation 
routines. 

Initiator/ terminator routines use the 
PDQ to obtain pointers to UCBs when allo- 
cating devices to passed data sets. Step 
termination routines use the PDQ to obtain 
UCB allocation pointers and disposition 
information. 



When control passes to the initiator/ 
terminator, the JFCB housekeeping routine 
inspects the disposition field of the SIOT 
for the disposition •"PASS" to determine 
whether a new entry may be required in the 
PDQ . 

If a PASS disposition is found and the 
dsname is not in the PDQ directory because 
it was not placed into the directory by a 
prior PASS, a fifty-six byte entry is made 
in the PDQ for this dsname. If the last 
PDQ directory block and PDQ block already 
contain the maximum number of three 
entries, auxiliary storage space is 
assigned for a new PDQ directory block and 
a new PDQ block, thereby providing space 
for three more dsname entries. 

/Jhen a passed data set is to be 
referenced by a subsequent step in the same 
job, the dsname is specified in the DD 
statement. The JFCB housekeeping routine 
checks for the dsname in the PDQ directory 
to see if the data set was received (passed 
from a previous step) . 

If the dsname is found in the PDQ direc- 
tory, the existing PDQ entry for this 
dsname is updated to identify the reference 



76 



as the latest reference to this dsname and 
the data set is marked as being received in 
the PDQ entry. If no entry is found, the 
data set must have been cataloged, so the 
JFCB routine searches the catalog for this 
dsname, assuming that this is an initial 
reference for this job to a Ccitaloged data 
set. 

Bits of the terminate work area byte of 
the PDQ block have the following status 
significance: 



Bit Significance 

Initial status 

1 Current status 

2 Pass satisfied 

3 SYSIN specified 

4 SYSOUT specified 



Status 



1 = 

1 

1 

= 

1 = 
1 = 



old 

old 

passed 

received 

SYSIN 

SYSOUT 



Step Control Table 

The step control table (SCT) , shown in 
Figure 44, is used to pass control informa- 
tion to the DD routine of the interpreter 
and to the initiator/ terminator routines, 
which also contribute information to the 
table. This table is created and initia- 
lized by the execute routine of the inter- 
preter when an EXEC statement is read. One 
SCT is created for each step of a job, and 
is stored by the interpreter control rou- 
tine and the initiator /terminator step 
initiation routine. 

When the EXEC statement includes the 
optional FARM field, the information is 
placed in a specially created SCT extension 
block, whose storage address is maintained 
in a four-byte field at offset 68 (44 hex) 
of the SCT. Zeroes in this field indicate 
that the EXEC statement provided no PARM 
information, and hence that no SCT exten- 
sion block was created. 

If the step is part of a previously 
cataloged procedure, the name of the step 
that called the procedure, if any, is 
entered. The following variable-content 
and indicator fields are included in the 
table: 
1. Internal Step Status Indicators (off- 
set 4 hex) : 

Bit 2 contains a 1 if RD = NR is spe- 
cified on the JOB or EXEC 
statement. 
Bit 3 contains a 1 if RD : = RNC or RD = 
NC is specified on the JOB or 
EXEC statement. 
Bit 4 contains a 1 if RD == R or RD = 
RNC is specified on the JOB or 
EXEC statement. 
Bit 7 contains a 1 if an error condi- 
tion caused the step to be 
terminated. 



PARM Count or Step Status Code (offset 
8 hex) : 

a. Interpreter : The number of char- 
acters specified in the PARM para- 
meter of the EXEC statement is 
placed in this entry. 

b. Initiator/Terminator : This table 
entry contains the condition code 
returned by the processing 
program. 

Step Type Indicators (offset 43 hex) : 

Bit contains a one if the following 
parameter definition appears in 
the EXEC statement: 

PGM=* . stepname .ddname 

Bit 1 indicates SYSIN is specified 
(DD *). 

Bit 2 indicates SYSOUT is specified. 

Bit 3 contains a 1 if JFCB housekeep- 
ing is complete. 

Bits 4, 5, and 6 are unused in PCP. 
Bit 7 is reserved. 

Extension of Internal Step Status 

Indicators (offset 68 hex) : 

Bit 6 contains a 1 if the job has 

ended . 
Bit 7 contains a 1 if the GDG Bias 

Table needs to be updated. 

Execute Step after ABEND or Eighth 
Condition Code (offset AO hex) : 
(Execute step after ABEND) 
First byte (offset AO) : 
Bit is not used. 
Bit 1 is not used. 
Bit 2 is not used. 
Bit 3 contains a 1 if the step is 

bypassed because of one or more 

prior ABEND macros. 
Bit 4 contains a 1 if the step is 

bypassed because COND=ONLY was 

specified and no ABEND has 

occurred. 
Bit 5 contains a 1 if the step was 

terminated by the ABEND routine 

during problem program 

execution. 
Bit 6 contains a 1 if the interpreter 

encountered the EVEN parameter 

in the COND field of the EXEC 

statement . 
Bit 7 contains a 1 if the interpreter 

encountered the ONLY parameter 

in the COND field of the EXEC 

statement. 
The remainder of the field (offset 
A1-A5) must contain zeros. 
(Eighth condition code) 

First two bytes (offset A0-A1) contain 

the eighth step condition code, or 

zeros. 

Third byte (offset A2) contains the 

eighth step condition operator, or 

zeros. 

Fourth through sixth bytes (offset 

A3-A5) contain the storage address of 

the eighth condition SCT, or zeros. 



Appendix B: Tables and Work Areas 77 



offset step Control Table 

Hex Dec 



10 


16 


18 


24 


20 


32 


28 


40 


30 


48 


38 


56 


40 


64 


48 


72 


50 


80 


58 


88 


60 


96 


68 


104 



70 
78 



112 
120 



A0 160 



3 
Storage address of step control table 


1 
Table ID = 02 


Internal step 
status indicators 


3 
Maximum step running time 


2 

PARM count or step status code 


Length of allocate work 2 
area or number of SIOTs 


3 
Storage address of first SIOT entry 


1 
Not used 


3 
Storage address of allocate work area 


1 
Not used 


3 
Storage address of next SCT 


1 

Not used 


Storage address of first SMB for next ^ 
step 


1 

Not used 


Storage address of last SMB for this ^ 
step 


1 
Not used 


Storage address of first ACT entry •* 
for this step 


1 

Not used 


3 
Storage address of volume table 


1 

Not used 


Storage address of dsname table for 3 
this step 


1 
Not used 


Name of step that called procedure (if any) 


p 
Name of step that called procedure (cont'd) 


Stepname 


8 
Stepname (cont'd) 


Relative pointer to 2 
step entry in ACT 


2 

Length of volume table 


No. of SIOTs ] 
in this step 


No. of setup 
messages 


No. of JFCBs ] 
to allocate 


Step type 
indicators 


4 
Storage 'address of SCT extension block 


1 
X'00' 


3 
Hierarchy region address 


1 
X'OT 


3 
Hierarchy 1 region address 


3 
Queue address of first write-to-programmer 

SMB for automatic checkpoint/restart use 


Count of WTP 1 
SMBs for step 


4 
Reserved 


2 

Hierarchy region size 


2 
Hierarchy 1 region size 


2 
Reserved 


Not used in PCP 


6 
Not used in PCP 


Queue address of SIOT for * 
PGM=*. STEPNAME. DDNAME 


Extension 
of internal 
step status 
indications 


3 
Storage address of step TIOT 


Programname 


8 
Programname (cont'd) 


2 

Length of dsname table in bytes 


2 

First step condition code 


First step 
condition 
operator 


3 
Storage address of first condition SCT 


Second through seventh step condition entries 


36 




6 

Execute step after ABEND or eighth condition code 


2 

Reserved 



Hex Offset 




68 
80 



SCT Exension Block 



TTR of this record 


3 


ID 


1 
= X'0C 


Parameter value 


Reserved 









Figure 44. Step Control Table and SCT Extension Block 



78 



Step Input/Output Table 



The Step Input/Output Table (SIOT) , shown 
in Figure 45, makes DD statement informa- 
tion available to the initiator/ 
terminator for use as a source of informa- 
tion for the TIOT and for providing DD 
information to allocation and disposition 
routines. When a DD statement is read, the 
interpreter creates a new SIOT and places 
the DD information into it. The individual 
bits of indicator bytes 56 through 59 and 
byte 92 in the SIOT are set to one to ind- 
icate the following conditions: 



BYTE 55: Scheduler Data Set Disposition 





Switches (SCTSDISP) 


Bit 





Nonshareable volume 


Bit 


1 


Retain volume 


Bit 


2 


Private volume 


Bit 


3 


Pass data set 


Bit 


4 


Keep data set 


Bit 


5 


Delete data seit 


Bit 


6 


Catalog data set 


Bit 


7 


Uncatalog datci set 


BYTE 56: 


S 



tatus Byte 1 (SCTSBYT1) 


Bit 


Dummy data set 


Bit 


1 


SYS IN data set 


Bit 


2 


Split (primary) 


Bit 


3 


Split (secondary) 


Bit 


4 


Suballocate 


Bit 


5 


Parallel mount indicator 


Bit 


6 


Unit affinity 


Bit 


7 


Unit separation 


BYTE 57: 


S 



tatus Byte 2 (SCTSBYT2) 


Bit 


Channel affinity 


Bit 


1 


Channel separcition 


Bit 


2 


Volume affinity 


Bit 


3 


JOBLIB DD statement 


Bit 


4 


Unlabeled 



Bit 5 Nonstandard label 
Bit 6 Defer mounting 
Bit 7 Received data set 



BYTE 58: Status Byte 3 (SCTSBYT3) 

Bit Volume reference is dsname 
Bit 1 SYSIN expected 

(procedures only) 
Bit 2 No associated volume 

serial in volume table 
Bit 3 Intra-step suballocate 
Bit 4 SYSOUT was specified 
Bit 5 New data set 
Bit 6 Modified data set 
Bit 7 Old data set 



BYTE 59: Status Byte 4 (SCTSBYT4) 

Bit Set by reader/interpreter 

to indicate GDG single 
Bit 1 SIOT created for GDG all 
Bit 2 Volume serial was found 

in passed data set queue 

(PDQ) 
Bit 4 Step processed 
Bit 5 Intra-step volume affinity 
Bit 6 Data set is in PDQ 
Bit 7 1 = old or modified data 

set 

= new data set 



BYTE 92: Conditional Disposition 
Status Byte (SIOTALTD) 



Bits 0-2 Reserved 



Bit 3 



Bit 4 
Bit 5 
Bit 6 
Bit 7 



This bit is set at Restart 
time to indicate that 
this DD is not 
private. 
Keep data set 
Delete data set 
Catalog data set 
Uncatalog data set 



Appendix B: Tables and Work Areas 79 



Offset 


Hex 


Dec 








4 


4 


C 


12 


14 


20 


1C 


28 


24 


36 



SIOTDSKA 
Auxiliary Storage Address of SIOT 



SIOTTYPE 
Table ID =3 



SCTDDN<\M 
DD Name 



SCTCSADD 
Internal DD Numbers of Channel Separation and Affinity Requests 



SCTUSADD 
Internal DD Numbers of Unit Separation and Affinity Requests 



SCTPSIOT 
Auxiliary Storage Address of Next SIOT in Chain 



SCTPJFCB 
Auxiliary Storage Address of JFCB 



SIOTVRSB 4 

Auxiliary Storage Address of SIOT for VOLREF or SUBALLOC 



SIOTSTDP 4 

Auxiliary Storage Address of SIOT System Output/Dependency Block 



2C 44 



34 52 



3C 60 



Reserved 



Not used in PCP 



1 
SCTSPOOL 
Number of Pool 
DDs 



1 
SCTVOLCT 
Number of 
Volumes in VOLT 



SCTVLPTR 
Relative Pointer to Volume 
Table Entry 



SCTDDINO 

Number of 
Internal DDs 



SCTNMBUT 

Number of Units 
for Data Set 



SIOTVLCT 



Value of 

Specified Volume 
Count 



SCTSDISP ] 

Scheduler Data 
Set Disposition 
Switches 



SCTSBYT1 SCTSBYT2 SCTSBYT3 I SCTSBYT4 

Indicator Bytes 1 through 4 (See Text) 



SCTUTYPE 



Bytes through 5 = Device Type 



Bytes 6 and 7 =UCB address of Unit 
Requested if there is a Valid 
Specific Unit Request 



44 68 

4C 76 



54 84 



5C 92 



64 100 



74 116 



7C 124 



84 132 



SCTOUTNM 
System Output Program Name 



SCTOUTNO 
System Output Form Number 



SIOTDPOP 
DSB TTR 



SIOTDSCT 
Created at Step Termination if SYSOUT Bit is Set 



SCTOUTPN 
System Output 
Class Name 



SCTDDDUP 
DD Statement 
Duplicate 
Number 



Reserved 



TTR of Next DSB — Applicable Only if SYSOUT Bit is Set 



S IOTA LTD 
Conditional Dis- 
position Byte 



SIOTPDQ 
TTR of SIOT Being Passed 



Not Used in PCP 



Not Used in PCP 



19 



Reserved 



SCTANAME (cont.) 



SCTANAME 
Name from DS Name = 
Dedicated Work Files 



44 



SIOTDCBF. 
DCB Reference Name 



I 



Figure H5. Step Input/Output Table 



80 



, T T T 

3| 1| 3| 

Storage addres ( s of this SMB | Table | Storage address of next SMB, | Not 

| ID=5 | or zero if last SMB in chain j used 
j. x + T _ + ^ 



Not used 



4| Pointer to 
j next available 
| byte 



T" 

1| 1 | Part of 
I Status j first 
| byte | message 



L _. _ _ X X + J 

Variable | 1| 
| Status 
j byte 
x. 



First message 



i 



. x J 



T 1 

Variable | 1| 
j Zero after j 
| last j 
j message | 

x J 



Lctst message 



L 

Figure 46, 



System Message; Block 



System Message Block 



The system message block (SMB), shown in 
Figure 46, temporarily stores all control 
statements, programmer messages, and diag- 
nostic error messages before they are 
printed via the system output writer rou- 
tine. The interpreter control routine 
creates and initializes one or more SMBs 
for each job step. Initiator/terminator 
routines also may add messages to the SMB. 
The chain address of the next SMB is given 
in bytes 4 through 6 of each table but the 
last, resulting in a chain of SMBs for each 
job. The status byte of each block con- 
cerns the following block, and contains the 
message length, zero if there aire no more 
messages, or all ones if a data set block 
follows. 



Storage address 
of this block 



j Table 
| ID=0 



j. x ^ 

Storage address 
of next block 

\. .j 

First volume serial 



r .j 

I 

| Second volume 

j serial 



I. J 



Volume Table 

The volume table (VOLT) , shown in Figure 
47, consists of a series of chained blocks, 
and contains the list of volume serial num- 
bers to be used in a given step. Use of 
the list reduces the number of times that 
the SYS1.SYSJ0BQE data set must be 
referenced during allocation. The table is 
built by the DD routine for each step, and 
is modified by the JFCB housekeeping rou- 
tine. The maximum extent of eeich block of 
the table is 176 bytes, and the; maximum 
number of volumes listed per block is 28. 



L J 



28th volume 
serial 



6| 



L J 

Figure 47. Volume Table 



Appendix B: Tables and Work Areas 81 



Write-to-Programmer Control Block 



The write-to-programmer control block 
(WTPC3) depicted in Figure 48 is a 16-byte 
area containing the information required 
for adding programmer messages to the pro- 
cessing program's message class output data 
set. This block is located through a 
pointer contained in the Job Step Control 
Block (JSCB) which, in turn, is located 
through a pointer contained in the Task 
Control Block (TCB) . Conditions reflected 
by the presence of 1 (switch on) in each 
Pit of the WTPFLGSA field are: 



BIT 

1 
2 
3 



CONDITION 

Job Queue I/O problem. 

"Limit exceeded" message issued. 

Step contains SYSOUT. 

Return from WTP third load to 

second load. 

"No more SMBs" message issued. 

Last SMB allowable for this job 

has been used. 

WTP has been invoked for this 

step. 

Routing code other than WTP 

encountered. 



Offset 

Hex Dec 





12 



Ficfure 48. 



3 
WTPSMB 
TTR of SYS1 .SYSJOBQE Record 
Containing Current WTP Message (s) 


WTPFLGSA 1 
Flags Indicating 
Various System 
Conditions 


WTPBYTES 1 
Remaining Bytes 
for Message Text 
in Current SMB 


3 
WTPQMPA 
Not Used in PCP 


WTPCRSMB 3 
TTR of First WTP SMB (For 
Automatic Checkpoint Restart) 


WTPCRCNT 1 
Number of 
WTP SMBs 
Used in Step 


WTPLIMIT 1 
Number of 
WTP SMBs 
Used in Job 


3 
WTPRSMBS 
TTR of Reserved WTP SMBs 



Write-To-Programmer Control 
Block 



82 



Appendix C: Load Modules and Assembly Modules 



This appendix lists job management load 
modules and indicates the assembly modules 
that are processed by the linkage editor 
into each load module during system genera- 
tion. Included is a separate list that 
shows the load modules in which each 
assembly module is contained. 

Job management routines for sequential 
scheduling systems are packaged in three 
configurations: 18K, 44K, and 100K (where 
K is 1024 bytes of main storage). The num- 
bers represent the maximum amount of main 
storage occupied by job management routines 
and work areas at any time. All three job 
management configurations function identic- 
ally but differ in both the number of their 
load modules and the number of assembly 
modules within each load module. Job man- 
agement routines occupy the dynamic portion 
of main storage alternately with processing 
programs, and therefore these size, designa- 
tions bear a direct relationship to the 
main storage required for each 
configuration . 



modules are shown on the control-flow 
charts. Because storage is used in this 
manner, the load module lists may be used 
with Charts 54, 55 or 56 to determine the 
approximate layout of main storage at dif- 
ferent times during the execution of job 
management routines. Other items present 
in the problem program area at the same 
time as the load modules are not shown on 
the control flow charts because, although 
these items are necessary, control is not 
passed among them. They are, generally, 
the tables and control blocks, work areas, 
access methods, buffers, and register save 
areas. 

In the following load module lists, 
entry points are shown if a load module 
contains more than one assembly module. If 
only one assembly module is named, the 
entry point is the same as the assembly 
module's control section (CSECT) name given 
in the Assembly Modules and Control Sec- 
ti ons table in this appendix. 



Load Modules 

In each configuration, all load modules are 
contained in three data sets: 
SYS1. NUCLEUS, SYSl . SVCLIB, and SYSl. 
LINKLIB. These data sets also contain 
other parts of the control program. The 
load modules in the first two data sets 
remain the same for all three job manage- 
ment configurations, but the SYSl. LINKLIB 
data set contains a different set of load 
modules for each configuration, depending 
on which one was selected at system genera- 
tion time. In the 18K configuration, LINK- 
LIB contains 56 load modules; in the 44K 
configuration, it contains 42 load modules; 
and in the 100K configurcition, 37 load 
modules . 

Charts 54 through 56 show the control 
flow among load modules. The decision to 
transfer control (XCTL) to a particular 
succeeding load module is made in the pre- 
vious load module. Each subsequent module 
loaded in response to an XCTL macro 
instruction is read into main storage 
directly over the previous load module. 
Such load modules are read into the low- 
numbered end of the dynamic, or problem- 
program, area of main storage. 

Modules that are brought into storage 
with LINK macro instructions and LOAD macro 
instructions occupy separate storage areas 
within the problem program are;a; such 



LOAD MODULES CONTAINED IN THE SYSl. NUCLEUS 
DATA SET 

The load modules and assembly modules in 
the following list are contained in the 
SYSl. NUCLEUS data set, and are always pres- 
ent in the nucleus, or fixed area of main 
storage, regardless of the job management 
conf iguration . 

Load Module Name: IEANUC01 

Assembly Modules: 

IEEBC1PE External interrupt routine. 

IEECIR01 Console interrupt routine. 

IEERSC01 Master scheduler buffers, 

switches, input/output block 
(IOB) , event control block 
(ECB) , channel control word 
(CCW) , and data extent block 
(DEB) . This load module forms 
master scheduler resident main 
storage in the nucleus area when 
the primary or alternate console 
(1052) is used. 

IEERSR01 Master scheduler buffers, 

switches, IOB, ECB, CCW, and 
DEB. This load module forms 
master scheduler resident main 
storage in the nucleus area when 
the composite console is used. 

IEFDPOST Unsolicited interrupt routine. 

IEFKRESA Table store subroutine work 
area. 

IEFWTPOA Write-to-programmer control 

block (WTPCB) and job step con- 
trol block ( JSCB) . 



Appendix C: Load Modules and Assembly Modules 83 



LOAD MODULES CONTAINED IN THE SYS1.SVCLIB 
DATA SET 

The load modules and assembly modules in 
the following list are contained in the 
SYS1.SVCLIB data set, and are called in 
response to SVC instructions. 



Load Module Name; IGC0003D 

Assembly Modules: 

IEEMXC01 Master command EXCP routine 

(Part 1) — primary/alternate 

console. 
IEEMXR01 Master command EXCP routine 

(Part 1) — composite console. 

Load Module Name: IGC0003E 

Assembly Modules : 

IEEWTCOO Write-to-operator (WTO) routine 

-- primary /alternate console. 
IEEWTROO Write-to-operator (WTO) routine 

— composite console. 

Load Module Name: IGC0003F 
Assembly Module: 

IEEBH1PE Not used in sequential schedul- 
ing system. 

Load Module Name: IGC0009 

Assembly Module: 

IEFXMPCP Transient queue manager I/O and 

record assignment routine. Used 

by WTP. 

L oad Module Name: IG C0103D 

Assembly Modules: 

IGC0103D Command processing routine for 

•MOUNT, VARY ONLINE/OFFLINE, and 
UNLOAD. This routine issues an 
XCTL to IGC0203D if command is 
other than listed. " 

IGC0203D Command processing routine for 
"DISPLAY JOBNAMES, STOP JOB- 
NAMES, CANCEL' (SHIFT command 
not used primary control 
program . ) 



Load Module Name: IGC0103E 

Assembly Modules: 

IEEWTC01 Write-to-operator-with-reply 

(WTOR) routine — primary/ 

alternate console. 
IEEWTR01 Write-to-operator-with-reply 

(WTOR) routine -- composite 

console. 



Load Module Name: IGC0203E 
Assembly Module: 

IEFWTPOO Write-to-programmer (WTP) 
initialization. 



Load Module Name: IGC0303E 
Assembly Module: 

IEFWTP01 Write-to-programmer (WTP) mes- 
sage processing. 



Load Module Name: IGC0U03E 
Assembly Module: 

IEFWTP02 Write-to-programmer (WTP) error 
routine. 



MODULES CONTAINED IN THE SYS1.LINKLIB DATA 
SET 

The load modules and assembly modules in 
the following lists are contained in the 
SYS1.LINKLIB data set. Separate lists are 
provided for each of the three Job Manage- 
ment packaging configurations. The load 
modules within each configuration and the 
assembly modules within each load module 
are listed in alphameric order. 



Any load module which contains IEFACTLK, 
IEFACTRT, and IEFWAD, may contain instead 
IEFACTFK if the system generation option 
for no accounting routine is specified. 



18K CONFIGURATION 



Load Modul e Name: DEVNAMET 
Entry Point: DEVNAMET 
Assembly Module: 
IEFWMAS1 Device Name Table. 

Load Module Name: DEVMASKT 
Entry Point: DEVMASKT 
Assembly Module: 
IEFWMSKA Device Mask Table. 



L oad Module Name: IEEFAU LT 
Alias : IEEGK1GM 
Assembly Module: 

IEEGK1GM Fault routine, issues Master 
Scheduler messages. 



Load Module Name: IEEJFCB 
Alias: IEEIC3JF 
Assembly Module: 

IEEIC3JF Contains preformatted JFCB for 
one START command. 

Load Module Name: IEESET 
Alias: IEEGES01 
Assembly Module: 

IEEGES01 Master Scheduler SET Command 
routine . 

Load Module Name: IEESJFCB 
Alias: IEEIC2NQ 
Entry Point: IEEIC2NQ 



84 



Assembly Module: 

IEEIC2NQ Saves START command JFCBs. 

IESQMSSS Table Store subroutine. 



L oad Module Name : IEESTART 

Alias : IEEIC1PE 

Entry Point: IEEIC1PE 

Assembly Modules: 

IEEREADER Start Reader routine. 

IEESTART Process START and STOP WTR 

commands . 
IEEWRITER Start Writer routine. 

L oad Module Name: IEETIME 

Alias: IEEQOT00 

Assembly Module: 

IEEQOT00 Sets time and date., 



Load Module Name; 



IEFAL0C1 



Alias : IEFXA 

Alias: IEFXJ000 

Entry Point: IEFXA 

Assembly Modules: 

IEFCVFAK Linkage to IEFMCVOL 

IEFQMSSS Table Store subroutine. 

IEFWAFAK Linkage to IEFWA000 (in IEFALOC2 

load module) . 
IEFWCFAK Linkage to IEFWCIMP (in IEFALOC3 

load module) . 
IEFXAMSG Contains Initiator/Terminator 

messages. 
IEFXCSSS Allocation Control routine. 
IEFXJIMP Allocation Error Recovery 

routine . 
IEFXJMSG Contains Initiator/Terminator 

messages. 
IEFYNFAK Linkage to IEFYNIMP (in IEFSTERM 

load module) . 
IEFYSSMB Message Enqueuing routine. 



Load Module Name: IEFAL0C2 

Alias: IEFWA000 

Entry Point: IEFWAOOO 

Assembly Modules: 

IEFDEVPT Device bit pattern. 

IEFSCAN Bit pattern scan routine. 

IEFSD006 Converts record number to logic- 
al track address (TTR) . 

IEFSGOPT System generation option 
indicators. 

IEFV15XL Allocation Error routine. 

IEFWAOOO Demand Allocation routine. 

IEFWCFAK Linkage to IEFWCIMP (in IEFALOC3 
load module) . 

IEFWMSKA Device mask table. 

IEFWSWIN Passes control to Decision Allo- 
cation or Automatic Volume Reco- 
gnition (AVR) routine. 

IEFXJFAK Linkage to IEFXCSSS (in IEFALOC1 
load module) . 

IEFXVFAK Linkage to IEFXV001 (in IEFALOCU 
load module) . 

IEFX300A Device Strikeout routine. 

IEFX5FAK Linkage to IEFX5000L (in 
IEFX5000 load module) . 



Load Module Name: IEFAL0C3 

Alias: IEFWCOOO 

Entry Point: IEFWCOOO 

Assembly Modules : 

IEFWCIMP TIOT Construction routine. 

IEFWDFAK Linkage to IEFWD000 (in IEFAL0C4 

load module) . 
IEFXHOOO Separation Strikeout routine. 
IEFXJFAK Linkage to IEFXCSSS (in IEFALOC1 

load module) . 

Load Module Name: IBFALOCU 
Alias: IEFWD000 
Alias: IEFXV001 
Entry Point: IEFWD000 
Assembly Modules : 
IEFCVFAK Linkage to IEFMCVOL. 
| IEFDEVPT Device bit pattern. 

IEFQMSSS Table Store subroutine. 
| IEFSCAN Bit pattern scan routine. 
IEFSD006 Converts record number to logic- 
al track address (TTR) . 
IEFV15XL Allocation Error routine. 
IEFWD000 External Action routine. 
IEFWD001 Message directory for External 

Action routine. 
IEFXKIMP Allocation Error Non-recovery 

routine. 
IEFXKMSG Contains Initiator/Terminator 

messages. 
IEFXTFAK Linkage to IEFXTOOO (in IEFALCC5 

load module) . 
IEFVMSG Automatic Volume Recognition 

(AVR) Message routine. 
IEFXVNSL Automatic Volume Recognition 

(AVR) Nonstandard Label routine. 
IEFXV001 Automatic Volume Recognition 

(AVR) routine. 
IEFXV002 AVR Volume Serial Number Reading 

routine . 
IEFX1FAK Linkage to IEFXJIMP (in IEFAL0C1 

load module) . 
IEFX2FAK Linkage to IEFX5000 (in IEFAL0C2 

load module) . 
IEFX3FAK Linkage to IEFWCIMP (in IEFALCC3 

load module) . 
IEFX300A Device Strikeout routine. 
IEFYNFAK Linkage to IEFYNIMP (in IEFSTERM 

load module) . 
IEFYSSMB Message Enqueuing routine. 

Load Module Name: IEFALQC5 

Alias: IEFXTOOO 

Entry Point: IEFXTOOO 

Assembly Modules: 

IEFCVFAK Linkage to IEFMCVOL 

IEFQMSSS Table Store subroutine. 

IEFSD006 Converts record number to logic- 
al track address (TTR) . 

IEFWDFAK Linkage to IEFWD000 (in IEFALOC4 
load module) . 

IEFW41SD Exit to IEK04FAK (in this load 
module) . 

IEFXKIMP Allocation Error Non-recovery 
routine . 

IEFXKMSG Contains Initiator/Terminator 
messages . 

IEFXTDMY Queue Overflow routine. 



Appendix C: Load Modules and Assembly Modules 85 



IEFXTMSG Contains Initiator/Terminator 

messages . 
IEFXTOOD Space Request routine. 
IEFXT002 TIOT Compression routine. 
IEFXT003 DASDM Error Recovery routine. 
IEFYNFAK Linkage to IEFYNIMP (in IEFSTERM 

load module) . 
IEFYSSMB Message Enqueuing routine. 
IEF04FAK Linkage to IEFSD004 (in IEFAC- 

TACH load module) . 



Load Module Name: IEFATACH 

Alias: IEFSD004 

Entry Point: IEFSD004 

Assembly Modules: 

IEFQMSSS Table Store subroutine. 

IEFSD004 Step Initiation routine, with 
exit to processing program. 

IEFSD006 Converts record number to logic- 
al track address (TTR) . 

IEFSD007 Call to Table Store subroutine. 

IEFSD010 Dequeues and writes out system 
message blocks (SMBs) . 



Load Module Name; 



IEFBR14 



Assembly Module: 
IEFBR14 Branch 14 . 



Load Module Name: IEFCOMMD 

Al:,as : IEFVHM 

Entry Point: IEFVHM 

Assembly Modules: 

IEECNDUN Prevents unresolved external 
reference to IEEICN01. 

IEEILCDM Prevents unresolved IEEICCAN 
symbol after initialization. 

IEEMCR01 Master Command routine. 

IEFHAAFK Linkage to IEFVHAA (in IEFCNTRL 
load module) . 

IEFHAFAK Linkage to IEFVHA (in IEFCNTRL 
load module) . 

IEFQMSSS Table Store subroutine. 

IEFSD006 Converts record number to logic- 
al track address (TTR) . 

IEFVGMSS Builds Interpreter error system 
message blocks (SMBs) . 

IEFVHQ Table Store Interface routine. 

IEFVHRSS Writes operator error messages. 

IEF7KPXX Input Stream Command routine. 



LOctd Module Name: IEFCSA 

Entry Point: IEFCSA 

Assembly Module: 

IEFCSA Reads JCL from console, 



Load Module Name: IEFCNTRL 

Alias : IEFVHA 

Alias: IEFVHAA 

Alias : IEFVHC3 

Alias : IEFVHE 

Alias: IEFVHE3 

Entry Point: IEFVHEB 

Assembly Modules: 

IEFFAFAK Linkage to IEFVFA (in IEFVHH 

load module) . 
IEFHBFAK Linkage to IEFVflB (in IEFVHH 

load module) . 
IEFHECFK Linkage to IEFVHEC (in IEFVHH 

load module) . 
IEFHHFAK Linkage to IEFVHH (in IEFVHH 

load module) . 
IEFHLFAK Linkage to IEFVHL (in IEFVhH 

load module) . 
IEFHMFAK Linkage to IEF7KPXX (in IEFCOMMD 

load module) . 
IEFQMSSS Table Store subroutine. 
IEFVGMSS Builds Interpreter error system 

message blocks (SMBs) . 
IEFVHA Performs input stream or proclib 

I/O. 
IEFVHAA Sets reader end-of-file (EOF) 

conditions. 
IEFVHC Checks input for valid 

continuation. 
IEFVHCB Identifies control statement 

verbs and performs procedure 

modification. 
ILFVHE Job Router routine. 
IEFVHEB Pre-scan routine. 
IEFVHGSS DD* Error routine. 
IEFVHQ Table Store Interface routine. 
IEFVHRSS Writes operator error messages. 
IEFVIND In-stream procedures expansion 

interface routine. 



Loeid Module Name: IEFDD 

Alias : IEFVDA 

Entry Point: IEFVDA 

Assembly Modules: 

IEFGMFAK Saves messages codes from 

IEFVDA . 
IEFQMSSS Table Store subroutine. 
IEFSD006 Converts record numher to logic- 
al track address (TTR). 
IEFSD012 DD* Statement routine. 
IEFSD090 Assigns unit for system output 

(SXSOUT) . 
IEFVDA DD Card Scan routine. 
IEFVDDUM Prevents unresolved IEFVDBSD 

symbol . 
IEFVGI Interpreter Dictionary Entry 

routine. 
IEFVGK Obtains parameter from internal 

table built by IEFVFA. 
IEFVGS Interpreter Dictionary Search 

routine . 
IEFVGT Checks validity of control card 

parameters. 
IEFVHF Entry point to IEFGMFAK. Final 

exit from IEFVDA. Linkage to 

IEFVGMEP (in IEFVGMSS load 

module) . 
IEFVHQ Table Store Interface routine. 
IEFVHRSS Writes operator error messages. 

Load Module Name: IEFERROR 

Alias: Iefvm61s 

Entry Point : IEFVMSGR 

Assembly Modules: 

IEFQMSSS Table Store subroutine. 

IEFVMLS6 JFCB housekeeping. Error Message 

routine . 
IEFVMLS7 Contains Initiator/Terminator 

messages. 



86 



IEFYNFAK 



IEFYSSME 



Linkage to IEFYNIMP (in IEFSTERM 

load module) . 

Message Enqueuing routine. 



Load Module Name: 



IEFEXEC 



Alias: IEFVEA 

Entry Point: IEFVEA 

Assembly Modules: 

IEFHFFAK Linkage to IEFVHF (in 1EFVHH 

load module) . 
IEFQMSSS Table Store subroutine. 
IEFVEA EXEC Card Scan routine. 
IEFVGI Interpreter Dictionary Entry 

routine. 
IEFVGK Obtains parameter from internal 

table built by IEFVFA. 
IEFVGMSS Builds Interpreter error system 

message blocks (SMBs) . 
IEFVGS Interpreter Dictionary Search 

routine. 
IEFVGT Checks validity of control card 

parameters. 
IEFVHQ Table Store Interface routine. 
IEFVHRSS Writes operator error messages. 

Load Modul e Name: IEFIDUMP 

Entry Point: IEFIDUMP 

Assembly Modules: 

IEFIDMPM Contains Initiator/Terminator 

messages. 
IEFIDUMP Indicative Dump routine. 
IEFQMSSS Table Store subroutine. 
IEFYNFAK Linkage to IEFYNIMP (in IEFSTERM 

load module) . 
IEFYSSMB Message Enqueuing routine. 

L oad Module Name: IEFINTFC 

Alias : IEFKG 

Alias: IEFSD001 

Alias: IEFSD008 

Entry Point: IEFSD008 

Assembly Modules: 

IEECNDUM Prevents unresolved external 
reference to XEEICN01. 

IEEILCDM Prevents unresolved IEEICCAN 
symbol after initiailization. 

IEEMCR01 Master Command routine. 

IEFHAAFK Linkage to IEFVHAA (in IEFCNTRL 
load module) . 

IEFHAFAK Linkage to IEFVHA (in IEFCNTRL 
load module) . 

IEFHCBFK Linkage to IEFVHCB (in IEFCNTRL 
load module) . 

IEFQMSSS Table Store subroutine. 

IEFSD001 Interpreter entry to IEF09FAK or 
to IEF23FAK. In case of 
restart, tests to determine if 
restarting step has been inter- 
preted; if not, returns to 
interpreter. 

IEFSD006 Converts record number to logic- 
al track address (TTR) . 

IEFSD007 Call to Table Store subroutine. 

IEFSD008 Initiator /Terminator to Inter- 
preter interface. Enters inter- 
preter to prepare for restart if 
necessary. 



IEFVHQ Table Store Interface routine. 
IEFVHRSS Writes operator error messages. 
IEF09FAK Linkage to IEFSD009 (in IEFSELCT 

load module) . 
IEF23FAK Linkage to IEFW23SD (in IEFJTRMl 

load module) . 
IEF7KGXX Interpreter-Initiator interface. 



Load Module Name: 



IEFJOB 



Alias: IEFVJA 

Entry Point: IEFVJA 

Assembly Modules: 

IEFHFFAK Linkage to IEFVHF (in IEFVHH 

load module) . 
IEFQMSSS Table Store subroutine. 
IEFVGK Obtains parameter from internal 

table built by IEFVFA. 
IEFVGMSS Builds Interpreter error system 

message blocks (SMBs) . 
IEFVGT Checks validity of control card 

parameters . 
IEFVHQ Table Store Interface routine. 
IEFVHRSS Writes operator error messages. 
IEFVJA Job Card Scan routine. 



Load Module Name: IEFJOBQE 

Alias : IEFINTQS 

Assembly Modules: 

IEFINTQA Initializes SYS1.SYSJ0BQE data 

set. 
IEFSGOPT System generation option 

indicators. 

Load Module Name: IEFJTRMl 

Alias: IEFW23SD 

Alias: IEFZA 

Entry Point: IEFZA 

Assembly Modules : 

IEFACTLK Linkage to user accounting 

routine . 
IEFACTRT Dummy, to be replaced by user 

accounting routine. 
IEFQMSSS Table Store subroutine. 
IEFWAD Writes accounting information to 

SYS1.ACCT data set. 
IEFW23SD Initializes for job termination, 

exits to IEFZAJB3 (in this load 

module) . 
IEFW31FK Linkage to IEFW31SD (in IEFJTRM2 

load module) . 
IEFYSSMB Message Enqueuing routine. 
IEFZAJB3 Job Termination routine. 
IEFZGJB1 Disposition and Unallocation 

subroutine. 
IEFZGMSG Contains Initiator/Terminator 

messages . 
IEFZHFAK Call to ZP0QMGR1 subroutine (in 

IEFZGJB1 assembly module of this 

load module) . 
IEFZHMSG Contains Initiator/Terminator 

messages. 

Load Module Name: 1EFJTRM2 

Alias: IEFW31SD 

Entry Point: IEFW31SD 

Assembly Modules: 

IEFQMSSS Table Store subroutine. 



Appendix C: Load Modules and Assembly Modules 87 



IKFSD003 Passes control to IEFSD010, then 
to IEK08FAK (both in this load 
module) . 

IEFSD006 Converts record number to logic- 
al track address (TTR) . 

IEFSD008 Call to Table Store subroutine. 
Enters interpreter to prepare 
for restart if necessary. 

IEFSD010 Dequeues and writes out system 
message blocks (SMBs) . 

IEFWTERM Job Ended Message routine. 

IEFW31SD Exit to IEFSD003 (in this load 
module) . 

IEF08FAK Linkage to IEFSD008 (in IEFINTFC 
load module) . 

IEF35DUM Prevents unresolved external 
reference to IEFS0035. 

Load Module Name; IEFMCVOL 
Alias : IEFCV0L1 
Alias : IEFCV0L2 
Alias: IEFCV0L3 
Entry Point: IEFCVOL1 
Assembly Modules: 

IEFMCVOL Sets up tables for mounting con- 
trol volume. 

Queue Manager Table Store 

subroutine. 

Linkage to IEFVMCVL (in IEFVMLS1 

assembly module) . 

JFCB Housekeeping Error Message 

Processing routine. 

Contains Initiator/Terminator 

messages. 

Linkage to IEFVM1 (in IEFVMLS1 

assembly module) . 

Linkage to IEFYNIMP. 

Message Enqueuing routine, 

enqueues SMBs . 



IEFQMSSS 

IEFVMFAK 

IEFVMLS6 

IEFVMLS7 

IEFVMMS1 

IEFYNFAK 
IEFYSSMB 



Load Module Name: IEFPRES 

Entry Point: IEFPRES 

Assembly Modules: 
| IEFDEVPT Device bit pattern. 

IEFK1MSG IEFPRES messages. 

IEFPRES Volume Attribute Initialization 
routine. 
| IEFSCAN Bit pattern scan routine. 

L oad Module Name: IEFPRINT 

Alias : IEFPRT 

Alias : SPRINTER 

Assembly Module: 

IEFPRTXX Tape SYSOUT to printer or punch. 



Load Module Name: IEFSELCT 

Alias: IEFSD009, IEFVM1, IEFVMCVL 

Entry Point: IEFSD009 

Assembly Modules: 

IEFACTLK Linkage to user accounting 
routine. 

IEFACTRT Dummy, to be replaced by user 
accounting routine. 

IEFCVFAK Linkage to IEFMCVOL. 

IEFQMSSS Table Store subroutine. 

IEFSD006 Converts record number to logic- 
al track address (TTR) . 



IEFSD009 Initializes 

Initiator/Terminator . 

IEFSD059 Checks that all SYSOUT classes 
requested by a job step have 
been made active. Passes con- 
trol to Job Separator routines 
if so indicated. 

IEFSD088 Contains transition routine for 
SYSOUT Job Separator. Sets con- 
trol characters, etc. 

IEFSD089 Contains PUT for Job Separator 
and error exit. 

IEFSD094 Set up for Job Separator rou- 
tine. Control is given for 
classes A and B only. 

IEFSD095 Elock Letter routine for Job 
Separator . 

IEFSEPAR Dummy Job Separator routine to 
be replaced by user separator 
routine. 

IEFSGOPT System generation option 
indicators. 

IEFVKIMP Execute Statement Condition Code 
routine . 

IEFVKMSG Contains Initiator/Terminator 
messages. 

IEFVMLK5 Linkage to IEFVMLS6 (in IEFERROR 
load module) . 

IEFVMLS1 JFCB housekeeping. Control 
routine . 

IEFVM2LS JFCB housekeeping. Fetch DCB 
routine . 

IEFVM3LS JFCB housekeeping. Generation 

Data Group (GDG) Single routine. 

IEFVM4LS JFCB housekeeping, Generation 
Data Group (GDG) All routine. 

IEFVM5LS JFCB housekeeping. Pattern Data 
Set Control Block (DSCB) 
routine . 

IEFVM76 Processes passed, non-labeled 
tape data sets. 

IEFWAD Writes accounting information to 
SYS1.ACCT data set. 

IEFWSTRT Job started and job termination 
message routine. 

IEFW21SD System Control routine. In case 
of restart, restores TT pointers 
from CVT and reads modified JCT 
from old queue. In case of step 
restart, moves tables from old 
to new queue. 

IEFXAFAK Linkage to IEFXCSSS (in IEFAL0C1 
load module) . 

IEFYNFAK Linkage to IEFYNIMP (in IEFSTERM 
load module) . 

IEFYSSMB Message Enqueuing routine. 

Load Module Name: IEFSTERM 

Alias: GO 

Alias : IEFVMCVL 

Al ias : IEFVM1 

Alias: IEFYN 

Entry Point: IEFSD011 

Assembly Modules: 

IEFACTLK Linkage to user accounting 

routine . 
IEFACTRT Dummy, to be replaced by user 

accounting routine. 



88 



IEFIDFAK Linkage to IE.FIDUMP (in IEFIDUMP 
load module) . 

IEFQMSSS Table Store subroutine. 

IEFSD002 Exit to IEF08FAK or IEF09FAK 
(both in this load module). 

IEFSD006 Converts record number to logic- 
al track address (TTR) . 

IEFSD007 Call to Table Store subroutine. 

IEFSD011 Entry to Job Management from 
Supervisor. 

IEFSD017 Places logical track address 
(TTR) of first system message 
block (SMB) into job control 
table (JCT). 

IEFVJIMP Job Statement Condition Code 
routine . 

IEFVJMSG Contains Initiator/Terminator 
messages. 

IEFWAD Writes accounting information to 
SYS1.ACCT data set. 

IEFW22SD Passes control to IEFYNIMP (in 
this load module) , then to 
IEFSD002 (in this load module) 
or to IEFZAJB3 (in IEFJTRMl load 
module) . 

IEFW42SD Passes control to IEFIDUMP (in 
IEFIDUMP load module) if neces- 
sary, or to IEFYNIMP (in this 
module) . 

IEFYNIMP Step Termination routine. 

IEFYNMSG Contains Initiator/Terminator 
messages. 

IEFYPJB3 Step Data Set Driver routine. 

IEFYPMSG Contains Initiator/Terminator 
messages. 

IEFYSSMB Message Enqueuing routine. 

IEFZAFAK Linkage to IEFZAJB3 (in IEFJTRMl 
load module) . 

IEFZGMSG Contains Initiator/Terminator 
messages. 

IEFZGST1 Disposition subroutine. Per- 
forms special disposition pro- 
cessing for step to be 
restarted. 

IEFZGST2 Deallocation subroutine. Per- 
forms special unallocation pro- 
cessing for step to be 
restarted. 

IEFZHMSG Contains Initiator/Terminator 
messages. 

IEF08FAK Linkage to IEFSD008 (in IEFINTFC 
load module) . 

IEF09FAK Linkage to IEFSD009 (in IEFSELCT 
load module) . 



Load Module Name; IEFVGMSS 

Alias ? IEFVGMEP 

Entry Point: IEFVGMEP 

Assembly Modules: 

IEFQMSSS Table Store subroutine. 

IEFVGMEP Calls IEFVGMSS to write messages 

for IEFVDA. 
IEFVGMSS Builds Interpreter error system 

message blocks (SMBs) . 
IEFVHQ Table Store Interface routine. 
IEFVHRSS Writes operator error messages. 



Load Module Name: IEFVGMl 

Assembly Module: 

IEFVGMl Contains Interpreter messages, 

Load Module Name: IEFVGM2 

Assembly Module: 

IEFVGM2 Contains Interpreter messages, 



Load Module Name: 1EFVGM17 

Assembly Module: 

IEFVGM17 Contains Interpreter messages. 

Load Module Name: IEFVGM18 

Assembly Module: 

IEFVGM18 Contains Interpreter messages. 

Load Module Name: IEFVGM70 

Assembly Module: 

IEFVGM70 Contains Interpreter messages. 

Load Module Name: IEFVGM71 

Assembly Module: 

IEFVGM71 Contains Interpreter messages. 

Load Module Name: IEFVGM78 

Assembly Module: 

IEFVGM78 Contains Interpreter messages. 



Load Module Name: 



IEFVHH 



Alias : IEFVFA 
Alias : IEFVHB 
Alias: IEFVHEC 
Alias: IEFVHF 
Alias: IEFVHL 
Entry Point: IEFVHH 
Assembly Modules : 



IEFACT User exit at Interpreter time. 
IEFDAFAK Linkage to IEFVDA (in IEFDD load 

module) . 
IEFEAFAK Linkage to IEFVEA (in IEFEXEC 

load module) . 
IEFHAFAK Linkage to IEFVHA (in IEFCNTRL 

load module) . 
IEFHCBFK Linkage to IEFVHCB (in IEFCNTRL 

load module) . 
IEFHCFAK Linkage to IEFVHC (in IEFCNTRL 

load module) . 
IEFHEBFK Linkage to IEFVHEB (in IEFCNTRL 

load module) . 
IEFHEFAK Linkage to IEFVHE (in IEFCNTRL 

load module) . 
IEFJAFAK Linkage to IEFVJA (in IEFJOB 

load module) . 
IEFKGDUM Linkage to IEF7KGXX (in IEFINTFC 

load module) . 
IEFQMSSS Table Store subroutine. 
IEFVFA Interpreter Scan routine. 
IEFVFB Symbolic parameter processing. 
IEFVGMSS Builds Interpreter error system 

message blocks (SMBs) . 
IEFVHB Generates DD* statement for data 

in the input stream. 
IEFVHEC Enqueues job requests. 
IEFVHF Post-processing Control routine. 
IEFVHGSS DD* Error routine. 



Appendix C: Load Modules and Assembly Modules 89 



IEFVHH 



IEFVHHB 

IEFVHL 
IEFVHQ 



Sets up table for queuing and 

provides Initiator/Terminator 

interface. 

Job and step enqueue 

housekeeping . 

Null Statement routine. 

Table Store Interface routine. 



IEFVHRSS Writes operator error messages, 



Load Module Name: IEFVHN 

Entry Point: IEFVHN 

Assembly Modules: 

IEEICN01 Builds new Reader-Writer table 
by inserting TTRs obtained by 
conversion of record numbers. 
These are the TTRs of the SYSOUT 
JFCBs in the preempted track 
area. 

IEEILCDM Prevents unresolved IEEICCAN 
symbol after initialization. 

IEEMCR01 Master Command routine. 

IEFK1FAK Linkage to IEF7K1XX (in IEFVH1 
load module) . 

IEFQMSSS Table Store subroutine. 

IEFRAPCP Restart Activation routine. 

IEFSD006 Converts record number to logic- 
al track address (TTR) . 

IEFVHN Interpreter Termination routine. 

IEF7K3XX Interpreter Exit routine. 



Load Module Name: IEFVH1 

Alias : IEFINITL 

Alias: IEFK1 

Entry Point: IEFK1 

Assembly Modules: 

IEEICN01 Builds new Reader/Writer table 
by inserting TTRs obtained by 
conversion of record numbers. 
These are the TTRs of the SYSOUT 
JFCBs in the preempted track 
area . 

IEEILC01 Automatic Command routine. 

IEEMCR01 Master Command routine. 

IEEVSMDM Prevents unresolved external 
reference to IEEVSMSB. 

IEFQMSSS Table Store subroutine. 

IEFSD006 Converts record number to logic- 
al track address (TTR) . 

IEFSD007 Call to Table Store subroutine. 

IEFSGOPT System generation option 
indicators . 

IEFVHQ Table Store Interface routine. 

IEFVHRSS Writes error messages to 
operator . 



IEEVH1 
IEFVH2 

IEFWSDIP 

IEF7K1XX 



IEF7K2XX 



IEFK3XX 



Interpreter work area (IWA) . 

Opens input reader and procedure 

libraries. 

Linkage control table (LCT) 

initialization. 

Entry to Job Management from 

Nucleus Initialization Program 

(NIP) . 

PCP-dependent Interpreter 

initialization. 

Interpreter exit routine. Calls 

IEFRAPCP if restart is to be 

done. 



Load Module Name: IEFVINA 

Entry Point: IEFVINA 

Assembly Modules: 

IEFQMSSS Table Store routine. 

IEFVGMSS Builds interpreter message 

blocks. 
IEFVHQ Table Store Interface routine. 
IEFVHRSS Writes in-stream error messages 

to the operator. 
IEIVINA Processes in-stream procedures. 
IEFVINB Searches directory for the TTR 

of an in-stream procedure. 
IEFVINC Builds a directory entry for an 

in-stream procedure. 
IEFVINE Checks syntax of the PROC and 

PEND statements. 
IEZNCODE Compresses blanks from in-stream 

procedure statements. 



Load Module Name: IEFX5000 

Entry Point: IEFX5000 

Assembly Modules: 

IEFV15XL Allocation Error routine. 

IEFWCFAK Linkage to IEFWCIMP (in IEFAL0C3 

load module) . 
IEFXHOOO Separation Strikeout routine 
IEFXJFAK Linkage to IEFXCSSS (in IEFAL0C1 

load module) . 
IEFX300A Device Strikeout routine. 
IEFX5000 Decision Allocation routine. 



Load Module Name: IEZDCODE 

Assembly Module: 

IEZDCODE Expands in-stream procedures. 



Load Module Name: IEZNCODE 

Assembly Module: 

IEZNCODE Compresses in-stream procedures, 



U4K CONFIGURATION 



Load Modul e Name: DEVNAMET 
Entry Point: DEVNAMET 
Assembly Module: 
IEFWMAS1 Device Name Table. 



Load Module Name: DEVMASKT 



Entry Point: DEVMASKT 

Assembly Module: 

IEFWMSKA Device Mask Table. 



90 



L oad Module Name: IEEFAU LT 
Alias : IEEGKlGM 
Assembly Module: 

IEEGKlGM Fault routine, issues Master 
Scheduler messages. 

L oad Module Name : IEEJFC B 
Alias : IEEIC3 JF 
Assembly Module: 

IEEIC3JF Contains preformatted JFCB for 
one START command. 

L oad Module Name: IEESET 
Alias : IEEGES01 
Assembly Module: 

IEEGES01 Master Scheduler SET Command 
routine. 

L oad Module Name: IEESJFCB 

Alias : IEEIC2NQ 

Entry Point: IEEIC2NQ 

Assembly Module: 

IEEIC2NQ Saves START command JFCBs. 

IESQMSSS Table Store subroutine. 



Load Module Name; 



IEESTART 



Alias : IEEIC1PE 

Entry Point: IEEIC1PE 

Assembly Modules: 

IEEREADR Start Reader routine. 

IEESTART Process START and STOP WTR 

commands . 
IEEWRITR Start Writer routine. 

Lo ad Module Name: IEETIM E 

Alias: IEEQOT00 

Assembly Module: 

IEEQOT00 Sets time and date. 

L oad Module Name: IEFALOC1 
Alias : IEFXA 
Entry Point: IEFXA 
Assembly Modules: 
| IEFDEVPT Device bit pattern. 

IEFQMSSS Table Store subroutine. 
| IEFSCAN Bit pattern scan routine. 
IEFSD006 Converts record number to logic- 
al track address (TTR) . 
IEFSGOPT System generation option 

indicators. 
IEFSWTN Passes control to Descision 

Allocation or Automatic Volume 

Recognition (AVR) routine. 
IEFV15XL Prevents unresolved external 

symbol for IEFS15XL. 
IEFWAOOO Demand Allocation routine. 
IEFWCFAK Linkage to IEFWCOOO (in IEFALOC2 

load module) . 
IEFWDOOO External Action routine. 
IEFWD001 Message directory for External 

Action routine. 
IEFXAMSG Contains Initiator/Terminator 

messages. 
IEFXCSSS Allocation Control routine. 
IEFXJIMP Allocation Error Recovery 

routine. 
IEFXJMSG Contains Initiator/Terminator 

messages. 



IEFXKIMP Allocation Error Non-recovery 

routine . 
IEFXKMSG Contains Initiator/Terminator 

messages. 
IEFXTFAK Linkage to IEFXTCCD (in IEFAL0C2 

load module) . 
IEFXVMSG Automatic Volume Recognition 

(AVR) Message routine. 
IEFXVNSL Automatic Volume Recognition 

(AVR) Nonstandard Label routine. 
IEFXV001 Automatic Volume Recognition 

(AVR) routine. 
IEFXV002 AVR Volume Serial Number Reading 

routine . 
IEFX300A Device strikeout routine. 
IEFX5FAK Linkage to IEFX5000 (in IEFAL0C2 

load module) . 
IEFYNFAK Linkage to IEFYNIMP (in IEFSTERM 

load module) . 
IEFYSSMB Message Enqueuing routine. 



Load Module Name: IEFAL0C2 

Alias: IEFWCOOO 

Alias: IEFX5000 

Entry Point: IEFX5000 

Assembly Modules : 

IEFQMSSS Table Store subroutine. 

IEFSD004 Step Initiation routine with 

exit to processing program. 
IEFSD006 Converts record to logical track 

address (TTR) . 
IEFSD007 Call to Table Storage 

subroutine . 
IEFSD010 Dequeues and writes out system 

message blocks (SMBs) . 
IEFV15XL Prevents unresolved external 

reference for IEFS15XL. 
IEFWCIMP TIOT Construction routine. 
IEFWDOOO External Action routine. 
IEFWD001 Message directory for External 

Action routine. 
IEFW41SD Exit to Step Initiation routine. 
IEFXAFAK Linkage to IEFXCSSS (in IEFALOC1 

load module) . 
IEFXHOOO Separation Strikeout routine. 
IEFXJIMP Allocation Error Recovery 

routine . 
IEFXJMSG Contains Initiator/Terminator 

messages. 
IEFXKIMP Aloocation Error Non-recovery 

routine . 
IEFXKMSG Contains Initiator/Terminator 

messages. 
IEFXTDMY Queue Overflow routine. 
IEFXTMSG Contains Initiator/Terminator 

messages. 
IEFXTOOD Space Request routine. 
IEFX300A Divide Strikeout routine. 
IEFX5000 Decision Allocation routine. 
IEFYNFAK Linkage to IEFYNIMP (in IEFSTERM 

load module) . 
IEFYSSMB Message Enqueuing routine. 



Load Module Name: IEFBR14 
Assembly Module: 
IEFBR14 Branch 14. 



Appendix C: Load Modules and Assembly Modules 91 



IEFACT 
IEFHHB 

IEFHMFAK 

IEFQMSSS 
IEFSD001 



Load Module Name: IEFCNTRL 

Alias : IEFKG 

Alias: IEFSD008 

Alias : IEFVHA 

Alias: IEFVHAA 

Alias : IEFVHCB 

Entry Point: IEFVHA 

Assembly Modules: 

IEEMCRFK Linkage to IEEMCREP (in IEFCOMMD 

load module) . 

User exit at Interpreter time. 

Job and step enqueue 

housekeeping . 

Linkage to IEF7KPXX (in IEFCOMKD 

load module) . 

Table Store subroutine. 

Interpreter entry to IEFSD009 or 

to IEFW23SD. 

In case of restart, tests to 

determine if restarting step has 

been interpreted; if not, 

returns to interpreter . 

Converts record number to logic- 
al track address. 

Call to Table Store subroutine. 

Initiator/Terminator to Inter- 
preter interface. 

Enters interpreter to prepare 

for restart if necessary. 

Dequeues and writes out system 

message blocks (SMBs) . 

DD* Statement routine. 

Assign unit for system output 

(SYSOUT) . 

DD Card Scan routine. 

Prevents unresolved IEFVDBSD 

symbol. 

EXEC Card Scan routine. 

Interpreter Scan routine. 

Symbolic parameter processing. 

Interpreter Dictionary Entry 

routine . 

Interpreter Get Parameter 

routine. 

Builds system message blocks 

(SMBs). 

Interpreter Dictionary Search 

routine. 

Interpreter Test and Store 

routine . 

Performs input stream or proclib 

I/O. 

Sets reader end-of-file (EOF) 

conditions. 

Generates DD* statement for data 

in the input stream. 

Checks input for valid 

continuation. 

Identifies control statement 

verbs and performs procedure 

modification . 

Job Router routine. 

Pre-scan routine. 

Enqueues job request. 

Post-processing Control routine. 

DD* Error routine. 

Sets up tables for queuing and 

provides Initiator/Terminator 



IEFSD006 

IEFSD007 
IEFSD008 



IEFSD010 

IEFSD012 
IEFSD090 

IEFVDA 
IEFVDDUM 

IEFVEA 
IEFVFA 
IEFVFB 
IEFVGI 

IEFVGK 

IEFVGMSS 

IEFVGS 

IEFVGT 

IEFVHA 

IEFVHAA 

IEFVHB 

IEFVHC 

IEFVHCB 



IEFVHE 

IEFVHEB 

IEFVHEC 

IEFVHF 

IEFVHGSS 

IEFVHH 



interface. 
IERVHL Null Statement Processing 

routine. 
IEFVHQ Table Store Interface routine. 
IEFVHRSS Writes error messages to 

operator. 
IEFVIND In- stream procedures expansion 

interface routine. 
IEF»7JA JOB Card Scan routine. 
IEF09FAK Linkage to IEFSD009 (in IEFSTERM 

load module) . 
IEF23FAK Linkage to IEFW23SD (in IEFJTERM 

load module) . 
IEF7KGXX Output table for step. 



Load Module Name: IEFCOMMD 

Alias: IEFVHM 

Alias: IEEMCREP 

Entry Point: IEFKP 

Assembly Modules : 

IEECNDUM Prevents unresolved external 
reference to IEEICN01. 

IEEILCDM Prevents unresolved IEEICAN sym- 
bol after initialization. 

IEEMCREP Links to IEEMCR01 and returns to 
IEF7KGXX (in IEFCNTRL load 
module) . 

IEEMCR01 Master command routine. 

IEF.3AAFK Linkage to IEFVHAA in IEFCNTRL 
load module) . 

IEFHAFAK Linkage to IEFVHA (in IEFCNTRL 
load module) . 

IEFQMSSS Table store subroutine. 

IEFSD006 Converts record number to logic- 
al track address (TTR) . 

IEFVGMSS Builds system message blocks 
(SMBs) . 

IEFVHQ Table store interface routine. 

IEF7KPXX Command in the input stream 
routine . 



Load Module Name: 



IEFCSA 



Entry Point: IEFCSA 

Assembly Module: 

IEFCSA Reads JCL from console. 



Load Module Name: IEFERROR 

Alias : IEFVM6LS 

Entry Point: IEFVMSGR 

Assembly Modules: 

IEFQMSSS Table Store subroutine. 

IEF/MLS6 JFCB housekeeping. Error Message 

routine . 
IEF/MLS7 Contains Initiator/Terminator 

messages. 
IEFYNFAK Linkage to IEFYNIMP (in IEFSTERM 

load module) . 
IEFYSSMB Message Enqueuing routine. 

Load Module Name: IEFIDUMP 

Entry Point: IEFIDUMP 

Assembly Modules: 

IEFIDMPM Contains Initiator/Terminator 

messages. 
IEFIDUMP Indicative Dump routine. 
IEFQMSSS Table Store subroutine. 



92 



IEFYNFAK 



IEFYSSMB 



Linkage to IEFYNIMP (in IEFSTERM 

load module) . 

Message Enqueuing routine. 



Load Module Name; IEFJOBQ E 

Alias: IEFINTQS 

Assembly Modules: 

IEFINTQA Initializes SYSl.SYSJOBQE data 

set. 
IEFSGOPT System generation option 

indicators. 

L oad Module Name: IEFJTER M 

Alias : IEFZA 

Alias: IEFW23SD 

Entry Point: IEFZA 

Assembly Modules: 

IEFACTLK Linkage to user ' s accounting 

routine. 
IEFACTRT Dummy routine to be replaced by 

user's account routine. 
IEFQMSSS Table Store subroutine. 
IEFSD006 Converts record number to logic- 
al track address (TTR) . 
IEFSD007 Call to Table Store subroutine. 
IEFSD010 Dequeues and writes out system 

message blocks (SMBs) . 
IEFWAD Writes accounting information to 

SYS1.ACCT data set. 
IEFWTERM Job ended message routine. 
IEFW23SD Initializes for job termination 

and exits to IEFZAJB3 (this load 

module) . 
IEFW31SD Job termination exit to 

IEFSD003. 
IEFYSSMB Message Enqueuing routine, 

enqueues SMBs. 
IEFZA JB3 Job Termination routine. 
IEIFZGJBl Disposition and Unallocation 

suaroutine. 
IEFZGMSG Contains initiator/terminator 

messages. 
IEFZHFAK Call to ZP0QMGR1 subroutine in 

IEFZGST1 (in IEFSTERM load 

module) . 
IEFZHMSG Contains Initiator/Terminator 

messages. 

Load Module Name : IEFMCVOL 

Alias : IEFCV0L1 

Alias : IEFCV0L2 

Alias: IEFCV0L3 

Entry Point: IEFCV0L1 

Assembly Modules: 

IEFMCVOL Sets up tables for mounting con- 
trol volume. 

IEFQMSSS Queue manager table store 
subroutine. 

IEFVMFAK Linkage to IEFVMCVL (in IEFVMLSl 
assembly module) . 

IEFVMLS6 JFCB housekeeping error message 
processing routine. 

IEFVMLS7 Contains Initiator/Terminator 
messages. 

IEFVMMS1 Linkage to IEFVM1 (in IEFVMLSl 
assembly module) . 

IEFYNFAK Linkage to IEFYNIMP. 



IEFYSSMB Message Enqueuing routine, 
enqueues SMBs . 

Load Module Name: IEFPRES 
Entry Point: IEFPRES 
Assembly Modules: 
IEFK1MSG IEFPRES messages 
IEFPRES Volume Attribute Initialization 
routine . 

Load Module Name: IEFPRINT 

Alias : IEFPRT 

Alias : SPRINTER 

Assembly Module: 

IEFPRTXX Tape SYSOUT to printer or punch. 

Load Module Name: IEFSTERM 

Alias: GO 

Alias: IEFSD009 

Alias : IEFYN 

Assembly Modules: 

IEFACTLK Linkage to user accounting 
routine. 

IEFACTRT Dummy, to be replaced by user 
accounting routine. 

IEFIDFAK Linkage to IEFIDUMP (in IEFIDUMP 
load module) . 

IEFQMSSS Table store subroutine. 

IEFSD002 Exit to EIF08FAK or IFSDOO. 
(both in this load module) . 

IEFSD006 Converts record number to logic- 
al track address (TTR) . 

IEFSD007 Call to Table store subroutine. 

IEFSD009 Initializes Initiator/ 

Terminator, passes control to 
IEFW21SD (in this load module) . 

IEFSD011 Entry to Job Management from 
Supervisor. 

IEFS017 Places logical track address 
(TTR) of first system message 
block (SMB) in job control table 
(JCT) . 

IEFSD059 Checks that all SYSOUT classes 
requested by a job step have 
been made active. Passes con- 
trol to Job Separator routines 
if so indicated. 

IEFSD088 Contains transition routine for 
SYSOUT Job Separator. Sets con- 
trol characters, etc. 

IEFSD089 Contains PUT for Job Separator 
and error exit. 

IEFSD094 Set up for Job Separator rou- 
tine. Control is given for 
classes A and B only. 

IEFSD095 Block Letter routine for Job 
Separator. 

IEFSEPAR Dummy Job Separator routine to 
be replaced by user separator 
routine . 

IEFSGOPT System generation option 
indicators . 

IEFVJIMP Job Statement Condition Code 
routine. 

IEFVJMSG Contains Initiator/Terminator 
messages. 

IEFVKIMP Execute Statement Condition Code 
routine . 



Appendix C: Load Modules and Assembly Modules 93 



1EFVKMSG Contains Initiator/Terminator 
messages. 

IEFVMLK5 Linkage to IEFVMLS6 (in IEFERROR 
load module) . 

IEFVMSL1 JFCB housekeeping. Control 
routine. 

IEFVM2LS JFCB housekeeping. Fetch DCB 
routine. 

IEFVM3L5 JFCB housekeeping. Generation 

Data Group (GDG) Single routine. 

IEFVM4LS JFCB housekeeping. Generation 
Data Group (GDG) All routine. 

IEFVM5LS JFCB housekeeping. Pattern Data 
Set Control Block (DCB) routine. 

IEFVM76 Processes passed, non-labeled 
data sets . 

IEFWAD Writes accounting information to 
SYSl.ACCT data set. 

IEFWSTRT Job started and job termination 
message routine. 

IEFW21SD System Control routine. In case 
of restart, restores TT pointers 
form CVT and reads modified JCT 
from old queue. In case of step 
restart, moves tables from old 
to new queue. 

IEFW22SD Passes control to UEFYNIMP (in 
this load module) , then to 
IEFSD002 ( in this load module) 
or to IEFZAJB3 (in IEFJTERM load 
module) . 

IEFW42SD Passes control to IEFIDUMP (in 
IEFIDUMP load module) if neces- 
sary, or to IEFYNIMP (in this 
load module) . 

IEFXAFAK Linkage to IEFXCSSS (in IEFAL0C1 
load module) . 

IEFYNIMP Step Termination routine. 

IEFYNMSG Contains Initiator/Terminator 
messages. 

IEFYPJB3 Step Data Set Driver routine. 

IEFYPMSG Contains Initiator/Terminator 
messages. 

IEFYSSMB Messages Enqueuing routine. 

IEFZAFAK Linkage to IEFZAJB3 (in IEFJTERM 
load module) . 

IEFZGMSG Contains Initiator/Terminator 
messages. 

IEF2GST1 Disposition subroutine. Per- 
forms special disposition pro- 
cessing for step to be 
restarted. 

IEF2GST2 Deallocation subroutine. Per- 
forms special unallocation pro- 
cessing for step to be 
restarted. 

IEFZHMSG Contains Initiator/Terminator 
messages. 

IEF08FAK Linkage to IEFSD008 (in IEFCNTRL 
load module) . 



Load Module Name: IEFVGM1 

Assembly Module: 

IEFVGM1 Contains Interpreter messages. 



Load Module Name: IEFVGM2 

Assembly Module: 

IEFVGM2 Contains Interpreter messages, 



Load Module Name: IEFVGM17 

Assembly Module: 

IEFVGM17 Contains Interpreter messages, 

Load Module Name: IEFVGM18 

Assembly Module: 

IEFVGM1, Contains Interpreter messages. 



Load Module Name: IEFVGM70 

Assembly Module: 

IEFVGM70 Contains Interpreter messages. 

Load Module Name: IEFVGM71 

Assembly Module: 

IEFVGM71 Contains Interpreter messages. 

Load Module Name: IEFVGM78 

Assembly Module: 

IEFVGM78 Contains Interpreter messages. 



Load Module Name: IEFVH1 

Alias: IEFKl 

Alias: IEFVHN 

Alias: IEFINITL 

Entry Point: IEFKl 

Assembly Modules: 

IEEICN01 Initialize new reader writer 

table by inserting TTRs obtained 

by conversion of record numbers. 

These are the TTRs of the SYSOUT 

JFCBs in the preempted track 

area . 
IEEILC01 Automatic command routine. 
IEEMCR01 Master command routine. 
IEEVSMDM Prevents unresolved external 

symbol for IEEVSMSG. 
| IEFDEVPT Device bit pattern. 
IEFK1MSG Reader/Interpreter message 

routine . 
IEFQMSSS Table store subroutine. 
IEFRAPCP Prepares for restart. 
| IEFSCAN Bit pattern scan routine. 
IEFSD006 Converts record number to logic- 
al track address (TTR) . 
IEFSD007 Call to table store subroutine. 
IEFSGOPT System generation option 

indicators. 
IEFVHN Interpreter termination 

routine. 
IEFVHQ Table store interface routine. 
IEFVHRSS Writes error messages to 

operator. 
IEFVH1 Interpreter work area (IWA) 

initialization routine. 
IEFVH2 Opens input reader and procedure 

libraries. 
IEF7K1XX Entry to job management from 

nucleus initialization program 

(NIP) . 



94 



IEF7K2XX PCP dependent interpreter 

initialization. 
IEF7K3XX Interpreter exit routine. Calls 

IEFRAPCP if restart is to be 

done. 



L oad Module Name: IEFVIN A 

Entry Point: IEFVINA 

Assembly Modules: 

IEFQMSSS Table Store subroutines. 

IEFVGMSS Builds interpreter message 

blocks . 
IEFVHQ Table Store Interface routine. 
IEFVHRSS Writes in-stream error messages 

to the operator. 
IEFVINA Processes in-stream procedures. 



IEFVINB Searches directory for the TTR 

of an in-stream procedure. 
IEFVINC Builds a directory entry for an 

in-stream procedure. 
IEFVINE Checks syntax of the PROC and 

PEND statements. 
IEZNCODE Compresses blanks from in-stream 

procedure statements. 

Load Module Name: IEZDCODE 



Assembly Module: 

IEZDCODE Expands in-stream procedures. 



Load Module Name: IEZNCODE 



Assembly Module: 

IEZNCODE Compresses in-stream procedures. 



10 OK CONFIGURATION 



Load Module Name: DEVNAMET 
Entry Point: DEVNAMET 
Assembly Module: 
IEFWMAS1 Device Name Table. 

Load Module Name: DEVMASKT 
Entry Point: DEVMASKT 
Assembly Module: 
IEFWMSKA Device Mask Table. 



Load Module Name: GO 



Alias: IEFVHA 
| Alias : IEFVINA 

Alias: IEFVMCVL 

Alias: IEFVM1 

Alias: IEFYN 

Alias : IEFZA 

Alias: IEZDCODE 

Alias: IEZNCODE 

Entry Point: IEFSD011 

Assembly Modules: 

IEECNDUM Prevents unresolved external 
reference to IEEICN01. 

IEEFZGJB1 Disposition and unallocation 
subroutine. 

IEEILCDM Prevents unresolved external 
reference. 

IEEMCR01 Master command routine. 

IEFACT User exit at interpreter time. 

IEFACTLK Linkage to user's accounting 
routine. 

IEFACTRT Dummy routine to be replaced by 
user's accounting routine. 

IEFCVFAK Linkage to IEFMCVOL (in IEFMCVOL 
load module) . 

IEFIDFAK Linkage to IEFIDUMP (in IEFIDUMP 
load module) . 

IEFQMSSS Table Store subroutine. 

IEFRPREP Restart preparation. 

IEFSD001 Interpreter entry to IEFSD009 or 
to IEFW23SD (both in this load 
module) . In case of restart, 
tests to determine if restarting 
step has been interpreted; if 
not, returns to interpreter. 



IEFSD002 Exit to IEFSD008 or IEFSD009 
(both in this load module) . 

IEFSD003 Passes control to IEFSD010 and 
then goes to 1EFSD008 (both in 
this load module) . 

IEFSD006 Converts record number to logic- 
al track address (TTR) . 

IEFSD007 Call to table store subroutine. 

IEFSD008 Initiator to interpreter inter- 
face. Enters interpreter to 
prepare for restart if 
necessary. 

IEFSD009 Initiator/terminator initializa- 
tion of output unit. 

IEFSD010 Dequeues and writes out system 
message blocks (SMBs) . 

IEFSD011 Entry to job management from 
supervisor. 

IEFSD012 DD* statement routine. SMB) 
into job control table ( JCT) . 

IEFSD059 Checks that all SYSOUT classes 
requested by a job step have 
been made active. Passes con- 
trol to Job separator routine if 
so indicated. 

IEFSD088 Contains transition routine for 
SYSOUT job separator. Sets con- 
trol characters, etc. 

IEFSD089 Contains PUT for job separator 
and error exit. 

IEFSD090 Assigns unit for system output 
(SYSOUT) . 

IEFSD094 Set up for job separator rou- 
tine. Control is given for 
classes A and B only. 

IEFSD095 Block letter routine for joP 
separator. 

IEFSEPAR Dummy job separator routine to 
be replaced by user separator 
routine . 

IEFSGOPT SYSGEN option flags. 

IEFVDA DD Card Scan routine. 

IEFVDDUM Prevents unresolved IEFVDBSD 
symbol. 

IEFVEA Exec Card Scan routine. 



Appendix C: Load Modules and Assembly Modules 95 



IEEVFA Interpreter Scan routine. 
IEFVFB Symbolic parameter processing. 
IEFVGI Interpreter dictionary entry 

routine . 
IEFVGK Interpreter get parameter 

routine . 
IEFVGMSS Builds interpreter system mes- 
sage blocks (SMBs) . 
IEFVGS Interpreter dictionary search 

routine . 
IEFVGT Interpreter test and store 

routine . 
IEFVHA Performs input stream or proclib 

I/O. 
IEFVHAA Sets reader end-of-file 

conditions . 
IEFVHB Generates DD* for data in the 

input stream. 
IEFVHC Checks input for valid 

continuation. 
IEFVHCB Identifies control statement 

verbs and performs procedure 

modification . 
IEFVHE Interpreter Router routine. 
IEFVHEB Pre- scan routine. 
IEFVHEC Enqueues job request. 
IEFVHF Post-processing Control routine. 
IEFVHGSS DD* Error routine. 
IEFVHH Sets up tables for queuing and 

provides initiator/terminator 

interface. 
IEFVHHB Job and step enqueuing 

hous ekeeping . 
IEFVHL Null statement processing 

routine. 
IEFVHQ Table store interface routine. 
IEFVHRSS Writes error messages to 

operator. 
IEFVINA Processes in-stream procedures. 
IEFVINB Searches directory for the TTR 

of an in-stream procedure. 
IEFVINC Builds a directory entry for an 

in-stream procedure. 
IEFVIND In-stream procedures expansion 

interface routine. 
IEFVINE Checks syntax of the PROC and 

PEND statements. 
IEFVJA Job card scan routine. 
IEFVJIMP JOB statement condition code 

routine. 
IEFVJMSG Contains initiator/terminator 

messages. 
IEFVKIMP EXEC statement conditional 

execution routine. 
IEFVKMSG Contains initiator/terminator 

messages. 
IEFVMLS1 JFCB housekeeping control 

routine . 
IEFVMLS6 JFCB housekeeping error message 

processing routine. 
IEFVMLS7 Contains initiator/terminator 

messages. 
IEFVM2LS JFCB housekeeping fetch DCB 

routine. 
IEFVM3LS JFCB housekeeping generation 

data group single routine. 
IEFVM4LS JFCB housekeeping generation 

data group all routine. 



IEFVM5LS JFCB housekeeping patterning 
data set control block (DSCB) 
subroutine. 

IEFVM76 Processes passed, non-labeled 
tape data sets. 

IEFWAD Writes accounting information to 
SYS1.ACCT data set. 

IEFWSTRT Job started and job termination 
message routine. 

IEFWTERM Job ended message routine. 

IEFW21SD System control routine. In case 
of restart, restore TT pointers 
from CVT and reads modified JCT 
from old queue. In case of step 
restart, moves tables from old 
to new queue. 

IEFW22SD Passes control to IEFYNIMP 

assembly module, and then to 
IEFSD002 or IEFZAJB3 (all in 
this load module) . 

IEFW23SD Initializes for job termination 
and exits to IEFZAJB3 (in this 
load module) . 

IEFW31SD Job termination exit to 
IEFSD003. 

IEF/J42SD Passes control to IEFIDUMP if 
needed, or to IEFYNIMP. 

IEFXAFAK Linkage to IEFXCESS (in IEFALLOC 
load module) . 

IEFYNIMP Step termination routine. 

IEFifNMSG Contains initiator /terminator 
messages. 

IEFYPJB3 Step data set driver routine. 

IEFYRCDS Table of Abend codes eligible 
for restart. 

IEFYSSMB Message enqueuing routine. 

IEFZAJB3 Job termination routine. 

IEF2GST1 Disposition subroutine. Per- 
forms special disposition pro- 
cessing for step to be 
restarted. 

IEFZGST2 Unallocation subroutine. Per- 
forms special unallocation pro- 
cessing for step to be 
restarted. 

IEFZHMSG Contains initiator/terminator 
messages. 

IEF2GMSG Contains initiator/terminator 
messages. 

IEF7KGXX Output tables for step. 

IEF7KPXX Command in the input stream 
routine . 

IEZDCODE Expands in-stream procedures. 

IEZNCODE Compresses in-stream procedures. 



Loa d Module Name; IEEFAULT 
Alias : IEEGK1GM 
Assembly Module: 

IEEGK1GM Fault routine, issues Master 
Scheduler messages. 

Load Module Name: IEEJFCB 
Alias: IEEIC3JF 
Assembly Module: 

IEEIC3JF Contains preformatted JFCB for 
one START command. 



96 



L oad Module Name: IEESET 
Alias : ILEGES01 
Assembly Module: 

IEEGES01 Master Scheduler SET Command 
routine . 



L oad Module Name: IEESJFCB 

Alias : IEEIC2NQ 

Entry Point: IEEIC2NQ 

Assembly Module: 

IEEIC2NQ Saves START command JFCBs. 

IESQMSSS Table Store subroutine. 

Load M odule Name: IEESTART 

Alias: IEEIC1PE 

Entry Point: IEEIC1PE 

Assembly Modules: 

IEEREADR Start Reader routine. 

IEESTART Process START and STOP WTR 

commands . 
IEEWRITR Start Writer routine. 



Load Modul e Name: IEETIM E 

Alias: 1EEQOT00 

Assembly Module: 

IEEQOT00 Sets time and date. 

L oad Module Name: IEFALLOC 

Alias : IEFXA 

Entry Point: IEFXA 

Assembly Modules: 

IEFCVFAK Linkage to IEFMCVOL (in IEFMCVOL 

load module) . 
| IEFDEVPT Device bit pattern. 

IEFQMSSS Table store subroutine. 
| IEFSCAN Bit pattern scan routine. 
IEFSD004 Step initiation routine, with 

exit to processing program. 
IEFSD006 Converts record number to logic- 
al track address (TTR) . 
IEFSD007 Call to table store subroutine. 
IEFSD010 Dequeues and writes out system 

message blocks (SMBs) . 
IEFSGOPT System generation option 

indicators. 
IEFVJMSG Contains initiator/terminator 

messages. 
IEFVKMSG Contains initiator/terminator 

messages. 
IEFV15XL Prevents unresolved external 

symbol for IEFS15XL. 
IEFWAOOO Demand allocation routine. 
IEFWCIMP Task input/output table (TIOT) 

construction routine. 
IEFWDOOO External action routine. 
IEFWD001 Message directory for external 

action routine. 
IEFWSWIN Passes control to decision allo- 
cation or AVR routine. 
IEFW41SD Exit to step initiation routine. 
IEFXAMSG Contains initiator/terminator 

messages. 
IEFXCSSS Allocation control routine. 
IEFXH000 Separation strikeout routine. 
IEFXJIMP Allocation error recovery 

routine. 



IEFXJMSG Contains initiator/terminator 

messages. 
IEFXKIMP Allocation error non-recovery 

routine . 
IEFXKMSG Contains initiator/terminator 

messages. 
IEFXTDMY Queue overflow routine. 
IEFXTMSG Contains initiator/terminator 

messages. 
IEFXTOOD Space request routine. 
IEFXT002 TIOT compression routine. 
IEFXT00O DADSM error recovery routine. 
IEFXVMSG AVR message routine. 
IEFXVNSL AVR Nonstandard Label routine. 
IEFXV001 Automatic volume recognition. 
IEFXV002 AVR Volume Serial Number Reading 

routine. 
IEFX300A Device strikeout routine. 
IEFX5000 Decision allocation routine. 
IEFYNFAK Linkage to IEFYNIMP (in GO load 

module) . 
IEFYSSMB Message enqueuing routine, 

enqueues SMBs . 
IEF35DUM Prevents unresolved IEFSD035 

symbol. 

Load Module Name: ILFBR14 
Assembly Module: 
IEFBR14 Branch 14. 

Load Module Name: IEFCSA 

Entry Point: IEFCSA 

Assembly Module: 

IEFCSA Reads JCL from console. 

Load Module Name: IEFIDUMP 

IEFIDMPM Contains Initiator/Terminator 

messages. 
IEFIDUMP Indicative Dump routine. 
IEFQMSSS Table store subroutine. 
IEFYNFAK Linkage to IEFYNIMP (in IEFSTERM 

load module) . 
IEFYSSMB Message Enqueuing routine. 

Load Module Name: IEFJOBQE 

Alias: IEFINTQS 

Assembly Modules: 

IEFINTQA Initializes SYS1.SYSJ0BQE data 

set. 
IEFSGOPT System generation option 

indicators. 

Load Module Name: IEFMCVOL 

Alias : IEFCV0L1 

Alias: IEFCVOL2 

Alias : IEFCVOL3 

Entry point: IEFCVOL1 

Assembly Modules: 

IEFMCVOL Sets up tables for mounting con- 
trol volume. 

IEFQMSSS Queue manager table store 
subroutine . 

IEFVMFAK Linkage to IEFVMCVL (in IEFVMLSl 
assembly module) . 

IEFVMLS6 JFCB housekeeping error message 
processing routine. 

IEFVMLS7 Contains initiator/terminator 
messages. 



Appendix C: Load Modules and Assembly Modules 97 



I2FVMMS1 Linkage to IEFVM1 (in IEFVMLS1 

assembly module). 
IEFYNFAK Linkage to IEFYNIMP. 
IEFYSSMB Message enqueuing routine, 

e nqueue s SMB s . 

Load Module Name; IEFPRES 
Entry Points IEFPRES 
Assembly Modules: 
IEFK1MSG IEFPRES messages 
IEFPRES Volume Attribute Initialization 
routine. 

Load Module Name: IEFPRINT 

Alias : IEFPRT 

Alias: SPRINTER 

Assembly Module: 

IEFPRTXX Tape SYSOUT to printer or punch. 



Load Module Name: IEFVGMl 

Assembly Module: 

IEFVGMl Contains Interpreter messages 



Load Module Name: 



IEFVGM2 



Assembly Module: 

IEFVGM2 Contains Interpreter messages. 



Load Module Name: IEFVGM17 

Assembly Module: 

IEFVGM17 Contains Interpreter messages. 



Load Module Name: IEFVGMl 8 

Assembly Module: 

IEFVGM18 Contains Interpreter messages, 



Load Modu le Name: IEFVGM70 

Assembly Module: 

IEFVGM70 Contains Interpreter messages. 

Load Module Name: IEFVGM71 

Assembly Module: 

IEFVGM71 Contains interpreter messages. 



Load Module Name: IEFVH1 

Alias: IEFK1 

Alias: IEFVHN 

Alias: IEFINITL 

Entry Point: IEFK1 

Assembly Modules: 

IEEICN01 Builds new reader writer table 

by inserting TTRs obtained by 

conversion of record numbers. 

These are the TTRs of the SYSOUT 

JFCBs in the preempted track 

area . 

Automatic command routine. 

Master command routine. 

Prevents unresolved external 

reference for IEEFSMSG. 

Device bit pattern. 

Linkage to IEFVHA (in GO load 

module) . 

Interpreter message routine. 

Table Store subroutine. 

Prepares for restart. 

Bit pattern scan routine. 

Converts record number to logic- 
al track address (TTR) . 

Call to table store subroutine. 

System generation option 

indicators . 

Interpreter termination routine. 

Table store interface routine. 

Writes error messages to 

operator . 

Interpreter Initialization 

routine . 

Opens input stream data set and 

procedure library. 

Linkage control table (LCT) 

initialization. 

Initial entry to job management 

from nucleus initialization pro- 
gram (NIP) . 

PCP interpreter system- dependent 

initialization . 

Interpreter exit routine. Calls 

IEFRAPCP if restart is to be 

done . 



IEEILC01 
IEEMCR01 
IEEVSMDM 

| IEFDEVPT 
IEFHAFAK 

IEFK1MSG 
IEFQMSSS 
IEFRAPCP 
| IEFSCAN 
IEFSD006 

IEFSD007 
IEFSGOPT 

IEFVHN 
IEFVHQ 
IEFVHRSS 

IEFVH1 

IEFVH2 

IEFWSDIP 

IEF7K1XX 



IEF7K2XX 



IEF7K3XX 



98 



Assembly Modules and 

Control Sections 

The following table shows in which load 
modules each assembly module is used in the 
three configurations of job management. 
The first column lists the assembly module 
names in alphameric order. Except as indi- 
cated, all assembly modules are contained 
in load modules in the SYSl.LINKLIB data 
set. The third column lists the control 
section names that correspond to the 



assembly module names in the first column. 
The next three columns of the table indic- 
ate which load modules of each configura- 
tion contain each assembly module. The two 
riqht-hand columns refer to the CHARTS sec- 
tion. If a control section is shown as a 
subroutine block, the flowchart number is 
listed in the "Appears As Subr. Block" 
column; if the flow within a control sec- 
tion is given in a chart, the flowchart 
number is listed in the "Flow is Defined" 
column. 



Assembly Modules and Control Sections (Part 1 of 7) 





T 


_ T 


"T" 












"1" 




"1 










Load 


Modules in 


Which 




Chart Number 


1 










Assembly 


Modules are Used 


h 




j 




T - 


1 


j Assembly 




| Control 


i- 












H 


Appears As | Flow is 






■| 




■| 






j Module Name 


j Notes 


j Section Name | 


18K 


1 


44K 


1 


100K 




Subr. Block j Defined 




j. _ 


+ 


■4 


-+- 




■+■ 




+- 




-+- 


+ 


H 


j IEECNDUM 




j IEEICN01 




lEFINTFC 
lEFCOMMD 




lEFCOMMD 




GO 








| IEEGES01 




| IEEGESTO 




IEESET 




IEESET 




IEESET 








| IEEGK1GM 




| IEEGK1GM 




IEEFAULT 




IEEFAULT 




IEEFAULT 




05,23 | 




| IEEICN01 




| IEEICN01 




IEFVHN 




IEFVH1 




IEFVH1 








j IEEIC2NQ 




| IEEIC2NQ 




IEESJFCB 




IEESJFCB 




IEESJFCB 








| IEEIC3JF 


| ** 


| IEEIC3JF 




IEEJFCB 




IEEJFCB 




IEEJFCB 








| IEEILCDM 




| IEEICCAN 




IEFVHN 
lEFCOMMD 




lEFCOMMD 




GO 




05 | 




| IEEILC01 


| ** 


| IEEICCAN 




IEFVH1 




IEFVH1 




IEFVH1 








j IEEMCREP 




j IEEMCREP 








lEFCOMMD 












| IEEMCRFK 




| IEEB31 








lEFCOMMD 








02 | 05 




| IEEMCR01 




| IEEBB1 




lEFINTFC 
lEFCOMMD 
IEFVH1 
IEFVHN 




IEFVH1 
lEFCOMMD 




GO 
IEFVH1 




02,53,54,551 05 




| IEEQOT00 




| IEEQOT00 




IEETIME 




IEETIME 




IEETIME 








| IEEREADR 




j IEEICRDR 




IEESTART 




IEESTART 




IEESTART 








j IEERSC01 


1 * 


| IEEMSLT 




















| IEERSR01 


1 * 


j IEEMSLT 




















j IEESTART 




| IEEIC1PE 




IEESTART 




IEESTART 




IEESTART 




53,54,55 | 




| IEEVSMDM 




j IEEtfSMSG 




IEFVH1 




IEFVH1 




IEFVH1 








| IEEWRITR 




| IEECWTR 




IEESTART 




IEESTART 




IEESTART 








| IEFACT 




| IEFACT 




IEFVHH 




IEFCNTRL 




GO 








| IEFACTFK 


| **** 


| IEFACTFK 




lEFSTERM 
lEFSELCT 
lEFJTRMl 




IERSTERM 
IEFJTERM 




GO 








| IEFACTLK 


j **** 


| IEFACTLK 




lEFSTERM 
lEFSELCT 
lEFJTRMl 




lEFSTERM 
IEFJTERM 




GO 




46 | 48 




| IEFACTRT 


| **** 


| IEFACTRT 




lEFSTERM 
lEFSELCT 
lEFJTRMl 




lEFSTERM 
IEFJTERM 




GO 




47 | 




| IEFBR14 




| IEFBR14 




IEFBR14 




IEFBR14 




IEFBR14 








| IEFCSA 




| IEFCSA 




IEFCSA 




IEFCSA 




IEFCSA 








j IEFCVFAK 




| IEFCVOL1 




lEFSELCT 
lEFALOCl 
IEFALOC4 
IEFALOC5 




lEFSTERM 
lEFALOCl 
IEFALOC2 




GO 
IEFALLOC 








| IEFDAFAK 




| IEFVDA 




IEFVHH 
















| IEFDEVPT 




| IEFDEVPT 




IEFALOC2 
IEFALOC4 
IEFPRES 




lEFALOCl 
IEFVH1 




IEFALLOC 
IEFVH1 








j IEFDPOST 


1 * 


| IEFDPOST 




















| IEFEAFAK 




j IEFVEA 




IEFVHH 






1 










| IEFFAFAK 




| IEFVFA 




IEFCNTRL 






1 



































Appendix C: Load Modules and Assembly Modules 99 



Assembly Modules and Control {sections (Part 2 of 7) 



















Load Modules in 


Which 




Chart Number 


I 






Assembly 


Modules are Used 


h 




j 




t — 


i 


| Assembly 


| Control 


L »- 






H 


Appears As | Flow is 




r t 




"T 




| Module Name 
| IEFGMFAK 


Notes j Section Name 
| IEFVGM 


18K | 
IEFDD | 


44K 


j 100K 


-+- 


Subr. Block j Defined 


H 




| IEFHAAFK 


| IEFVHAA 


lEFCOMMD | 
lEFINTFC j 


lEFCOMMD 










| IEFHAFAK 


| IEFVHA 


lEFINTFC j 
lEFCOMMD | 
IEFVHH | 


lEFCOMMD 
lEFVHl 


| lEFVHl 








| IEFHBFAK 


| IEFVHB 


lEFCNTRL j 












| IEFHCFAK 


| IEFVHC 


IEFVHH j 












j IEFHCBFK 


| IEFVHCB 


lEFINTFC j 
IEFVHH j 












| IEFHEFAK 


| IEFVHE 


IEFVHH | 












| IEFHEBFK 


| IEFVHEB 


IEFVHH | 












j IEFHECFK 


| IEFVHEC 


lEFCNTRL | 












| IEFHFFAK 


| IEFVHF 


lEFEXEC j 
IEFJOB | 












| IEFHHFAK 


j IEFVHH 


lEFCNTRL | 












j IEFHLFAK 


j IEFVHL 


lEFCNTRL | 












j IEFHMFAK 


| IEFVHM 


lEFCNTRL | 


lEFCNTRL 










j IEFIDFAK 


| lEFIDUMP 


lEFSTERM j 


lEFSTERM 


| GO 








j IEFIDMPM 


j IEFIDMPM 


lEFIDUMP | 


lEFIDUMP 


j lEFIDUMP 








j lEFIDUMP 


| lEFIDUMP 


lEFIDUMP j 


lEFIDUMP 


| lEFIDUMP 




46,53,54 | 




| IEFINTQA 


| IEFINTQS 


IEFJOBQE j 


IEFJOBQE 


| IEFJOBQE 








| IEFJAFAK 


| IEFJA 


IEFVHH | 












| IEFKGDUM 


| IEFKG 


IEFVHH j 








16 | 




| IEFK1FAK 


| IEFK1 


IEFVHN | 








14 | 




j lEFMCVOL 


| IEFCVOL1 
| IEFCVOL2 
j IEFCVOL3 


lEFMCVOL | 


lEFMCVOL 


| lEFMCVOL 




25,53,54,55 | 27 




| IEFPRES 


| IEFPRES 


IEFPRES | 


IEFPRES 


| IEFPRES 




53 | 




| IEFPRTXX 


J SPRINTER 


IEFPRINT | 


IEFPRINT 


| IEFPRINT 








| IEFQMSSS 


| IEFQMSSS 


lEFSTERM j 
lEFSELCT | 
lEFALOCl | 
IEFALOC4 | 
IEFALOC5 j 
lEFATACH j 
lEFCNTRL | 
IEFDD | 
lEFINTFC j 
lEFEXEC j 
IEFJOB j 

lEFCOMMD | 
lEFERROR | 
lEFIDUMP j 
lEESJFCE j 
lEFVGMSS j 
IEFVHH | 
IEFVHN j 
lEFVHl | 
lEFVINA j 
lEFJTRMl | 
IEFJTRM2 | 
lEFMCVOL | 


lEFSTERM 
lEFALOCl 
lEFCNTRL 
IEFALCC2 

lEFERROR 

lEFIDUMP 

lEFVHl 

lEESJFCB 

lEFCOMMD 

lEFJTERM 

lEFMCVOL 

lEFVINA 


| GO 

| lEFVHl 

| lEFIDUMP 

| lEFSJFCB 
| lEFALLOC 
| lEFMCVOL 




24 | 




| IEFSCAN 


| IEFSCAN 


IEFALOC2 | 
IEFALOC4 | 
IEFPRES | 


lEFALOCl 
lEFVHl 


| lEFALLOC 
| lEFVHl 








| IEFSD001 


| IEFSD001 


lEFINTFC | 


lEFCNTRL 


| GO 








j IEFSD002 


| IEFSD002 


lEFSTERM | 


lEFSTERM 


j GO 








j IEFSD003 


| IEFSD003 


lEFJTERM | 


lEFJTERM 


j GO 

























100 



Assembly Modules and Control Sections (Part 3 of 7) 



Assembly 
Module Name 

IEFSD004 
IEFSD006 



Notes 
+ 



IEFSD007 



IEFSD008 
IEFSD009 
IEFSD010 

IEFSD011 
IEFSD012 
IEFSD017 
IEFSD059 
IEFSD088 
IEFSD089 

IEFSD090 
IEFSDG94 
IEFSD095 
IEFSEPAR 
IEFSGOPT 



IEFVDA 

IEFVDDUM 

IEFVEA 

IEFVFA 

IEFVFB 

IEFVGI 

IEFVGK 



IEFVGMEP 
IEFVGMSS 



IEFVGM1 
IEFVGM2 
IEFVGM3 
IEFVGM4 



Control 
Section Name| 

IEFSD004 
IEFSD006 



IEFSD007 



IEFSD008 
IEFSD009 
IEFSD010 

IEFSD011 
IEFSD012 
IEFSD017 
IEFSD059 
IEFSD088 
IEFSD089 
IEFSD89M 
IEFSD090 
IEFSD094 
IEFSD095 
IEFSEPAR 
IEFSGOPT 



IEFVDA 

IEFVDBSD 

IEFVEA 

IEFVFA 

IEFVFB 

IEFVGI 

IEFVGK 



IEFVGM 
IEFVGM 



IEFVGM1 
IEFVGM2 
IEFVGM3 
IEFVGM4 



j Load Modules in Which 


| Assembly Modules are Used 


L _ 






r T t 


| 18K 

■1 

| lEFATACH 


44K 
^ 

lEFALOC 


100K 


lEFALLOC 


j IEFSTERM 


IEFSTERM 


GO 


| IEFALOC2 


IEFALOC1 


IEFVH1 


j IEFALOC4 


IEFCNTRL 




| IEFALOC5 


IEFALOC2 


lEFALLOC 


j lEFATACH 




GO 


j IEFSELCT 






j IEFDD 


IEFVH1 




j IEFINTFC 


IEFCOMMD 




| IEFJTERM 


IEFJTERM 




j IEFVHN 






J IEFVH1 






| IEFSTERM 


IEFSTERM 


GO 


| lEFATACH 


IEFALOC2 


IEFVH1 


| IEFINTFC 


IEFCNTRL 




| IEFJTERM 


IEFVH1 




| IEFVH1 


IEFJTERM 




j IEFINTFC 


IEFCNTRL 


GO 


j IEFSELCT 


IEFSTERM 


GO 


j lEFATACH 


lEFALOC 2 


GO 


| IEFJTRM2 


IEFJTERM 




| IEFSTERM 


IEFSTERM 


GO 


| IEFDD 


IEFCNTRL 


GO 


| IEFSTERM 


IEFSTERM 


GO 


| IEFSELCT 


IEFSTERM 


GO 


j IEFSELCT 


IEFSTERM 


GO 


| IEFSELCT 


IEFSTERM 


GO 


| IEFDD 


IEFCNTRL 


GO 


j IEFSELCT 


IEFSTERM 


GO 


j IEFSELCT 


IEFSTERM 


GO 


| IEFSELCT 


IEFSTERM 


GO 


j IEFSELCT 


IEFSTERM 


GO 


| IEFALOC2 


IEFALOC1 


IEFVH1 


j IEFVH1 


IEFVH1 


IEFJOBQE 


| IEFJOBQE 


IEFJOBQE 




| IEFDD 


IEFCNTRL 


GO 


j IEFDD 


IEFCNTRL 


GO 


| IEFEXEC 


IEFCNTRL 


GO 


| IEFVHH 


IEFCNTRL 


GO 


| IEFVHH 


IEFCNTRL 


GO 


| IEFDD 


IEFCNTRL 


GO 


j IEFEXEC 






j IEFDD 


IEFCNTRL 


GO 


j IEFEXEC 






| IEFJOB 






j IEFVGMSS 






| IEFVHH 


IEFCNTRL 


GO 


j IEFVINA 


IEFVINA 




| IEFCOMMD 


IEFCOMMD 


IEFCOMMD 


j IEFVGMSS 






| IEFEXEC 






j IEFJOB 






| IEFVGM1 


IEFVGM1 


IEFVGM1 


| IEFVGM2 


IEFVGM2 


IEFVGM 2 


j IEFVGM3 


IEFVGM3 


IEFVGM3 


| IEFVGM4 


IEFVGM4 


IEFVGM 4 



-+ 



Chart Number 



Appears As 
Subr. Block 



46 



46 



14 

14 
14 



18 



53 



53,54,55 
53,54,55 
53,54,55 
53,54,55 



Flow is 
Defined 



48 



Appendix C: Load Modules and Assembly Modules 101 



Assembly Modules and Control Sections (Part 4 of 7) 
r t — t t 







Load Modules in 


Which 


Chart Number 






Assembly Modules are Used 


L „ 




r t 


Assembly j 


j Control 








j 


Appears As | Flow is 


r ~ ~ t 


1 


1 


Module Name | Not 


es j Section Name 


18K 


44K 


1 


100K 


Subr. Block | Defined 


+ 


+ ^ 


h + 


+ 


.| 


h _ + 


IEFVGM18 | 


j IEFVGM18 


IEFVGM18 


IEFVGM18 




IEFVGM18 


53,54,55 | 


IEFVGM70 j 


| IEFVGM70 


IEFVGM70 


IEFVGM70 




IEFVGM70 


53,54,55 | 


IEFVGM71 j 


| IEFVGM71 


IEFVGM71 


IEFVGM71 




IEFVGM71 




IEFVGM78 | 


| IEFVGM78 


IEFVGM78 


IEFVGM78 




IEFVGM78 


53,54,55 | 


IEFVGS | 


| IEFVGS 


IEFEXEC 
IEFDD 


lEFCNTRL 




GO 




IEFVGT | 


| IEFVGT 


IEFDD 

IEFEXEC 

lEFJOB 


lEFCNTRL 




GO 


18 | 


IEFVHA | 


| IEFVHA 


lEFCNTRL 


lEFCNTRL 




GO 


14,16 | 


IEFVHAA | 


| IEFVHAA 


lEFCNTRL 


lEFCNTRL 




GO 


16 | 


IEFVHB j 


| IEFVHB 


IEFVHH 


lEFCNTRL 




GO 


16 | 


IEFVHC j 


j IEFVHC 


lEFCNTRL 


lEFCNTRL 




GO 


16 | 


IEFVHC6 | 


| IEFVHCB 


lEFCNTRL 


lEFCNTRL 




GO 


16 | 


IEFVHE | 


| IEFVHE 


lEFCNTRL 


lEFCNTRL 




GO 


16 | 


IEFVHEB | 


| IEFVHEB 


lEFCNTRL 


lEFCNTRL 




GO 


16 | 


IEFVHEC | 


| IEFVHEC 


IEFVHH 


lEFCNTRL 




GO 


16 | 


IEFVHF | 


| IEFVHF 


IEFVHH 


lEFCNTRL 




GO 


16 | 


IEFVHGSS | 


| IEFVHG 


IEFVHH 


lEFCNTRL 




GO 


16 | 


IEFVHH | 


| IEFVHH 


IEFVHH 


lEFCNTRL 




GO 


16,53 | 


IEFVHHB j 


j IEFVHHB 


IEFVHH 


lEFCNTRL 




GO 




IEFVHL j 


| IEFVHL 


IEFVHH 


lEFCNTRL 




GO 


16 | 


IEFVHN | 


| IEFVHN 


IEFVHN 


lEFVHl 




lEFVHl 


14,53 | 20 


IEFVHQ j 


| IEFVHQ 


lEFCNTRL 

lEFINTFC 

IEFDD 

IEFEXEC 

lEFJOB 

lEFCOMMD 

IEFVHH 

lEFVGMSS 

lEFVHl 

IEFVINA 


lEFCNTRL 

lEFCOMMD 

lEFVHl 

IEFVINA 




GO 
lEFVHl 




IEFVHR3S | 


| IEFVHR 


lEFCNTRL 

IEFDD 

IEFEXEC 

lEFINITFC 

lEFVHl 

IEFVINA 

lEFCOMMD 

lEFJOB 

lEFVGMSS 


lEFCNTRL 

lEFVHl 

lEFCOMMD 

IEFVINA 




GO 
lEFVHl 




lEFVHl | 


| lEFVHl 


lEFVHl 


lEFVHl 




lEFVHl 


14,53,54,55| 


IEFVH2 j 


| IEFVH2 


lEFVHl 


lEFVHl 




lEFVHl 


14 | 


lEFVINA j 


| IEFVINA 


lEFVINA 


IEFVINA 




GO 




IEFVINB | 


| IEFVINB 


IEFVINA 


IEFVINA 




GO 




IEFVINC j 


| IEFVINC 


lEFVINA 


IEFVINA 




GO 




IEFVIND | 


| IEFVIND 


lEFCNTRL 
IEFEXEC 


lEFCNTRL 




GO 




IEFVINE | 


| IEFVINE 


IEFVINA 


IEFVINA 




GO 




IEFVJA | 


| IEFVJA 


lEFJOB 


lEFCNTRL 




GO 


14 | 


IEFV15XL | 


| IEFV15XL 


IEFALOC2 
IEFX5000 
IEFALOC4 


IEFALOC1 
IEFAL0C2 




IEFALLOC 




IEFVJIMP | 


| IEFVJ 


IEFSTERM 


IEFSTERM 




GO 


46,47 | 50 


IEFVJMSG j 


| IEFVJMSG 


IEFSTERM 


IEFSTERM 




GO 




IEFVKIMP | 


| IEFVK 


IEFSELCT 


IEFSTERM 




GO 


22 | 24 


IEFVKMSG j 


| IEFVKMSG 


IEFSELCT 


IEFSTERM 




GO 




IEFVMFAK | 


| IEFVMCVL 


IEFMCVOL 


IEFMCVOL 




IEFMCVOL 




IEFVMLK5 | 


| IEFVM6 


IEFSELCT 


IEFSTERM 









102 



Assembly Modules and Control Sections (Part 5 of 7) 

r __ T T . T 







Load 


Modules in Which 


Chart Number 


I 






Assembly 


Modules are Used 


I - *. 




j 




r t 


1 


Assembly | 


j Control 


L 








Appears As 


Flow is 




r 


i 


~ T 1 




Module Name | Not 


es j | Section Name 


18K 


1 


44K 


100K 


Subr. Block 


Defined 






































IEFVMLSl 1 


| IEFVM1 


lEFSELCT 




lEFSTERM 


GO 


24,25 


25 




IEFVMLS6 j 


| IEFVM6 


IEFERROR 




IEFERROR 


GO 


25,26 


33 




IEFVMLS7 | 


| IEFVM7 


IEFERROR 




IEFERROR 


GO 








IEFVMMS1 | 


| IEFVM1 


IEFMCVOL 




IEFMCVOL 


IEFMCVOL 








IEFVM2LS j 


| IEFVM2 


lEFSELCT 




lEFSTERM 


GO 


25,26 


29 




IEFVM3LS | 


| IEFVM3 


lEFSELCT 




lEFSTERM 


GO 


25,26 


30 




IEFVM4LS | 


| IEFVM4 


lEFSELCT 




lEFSTERM 


GO 


25,26 


31 




IEFVM5LS | 


| IEFVM5 


lEFSELCT 




lEFSTERM 


GO 


25,26 


32 




IEFVM76 | 


j IEFVM76 


lEFSELCT 




lEFSTERM 


GO 








IEFWAFAK | 


| IEFWAOOO 


lEFALOCl 














IEFWAD j*** 


* | IEFWAD 
| IEFWA002 


lEFSTERM 
lEFSELCT 
lEFJTRMl 




lEFSTERM 
IEFJTERM 


GO 








IEFWA000 | 


| IEFWA7 


IEFALOC2 




lEFALOCl 


IEFALLOC 


34 


36 




IEFWCFAK j 


| IEFWCOOO 


lEFALOCl 
IEFX5000 
IEFALOC2 




lEFALOCl 










IEFWCIMP | 


| IEFWCOOO 
| IEFWC002 


IEFALOC3 
IEFALOC3 




IEFALOC2 
IEFALOC2 


IEFALLOC 
IEFALLOC 


34 


41 




IEFWDFAK | 


| IEFWDOOO 


IEFALOC3 
IEFALOC5 














IEFWD000 | 


| IEFWDOOO 


IEFALOC4 




lEFALOCl 
IEFALOC2 


IEFALLOC 


34,35,38 


42 




IEFWD001 | 


| IEFWD001 


IEFALOC4 




lEFALOCl 
IEFALOC2 


IEFALLOC 








IEFWMASl | * 


* | DEVNAMET 


DEVNAMET 




DEVNAMET 


DEVNAMET 








IEFWMSKA | * 


* j DEVMASKT 


DEVMASKT 




DEVMASKT 


DEVMASKT 








IEFWSDIP | 


| IEFWSDIP 


IEFVH1 




IEFVH1 


IEFVH1 








IEFWSTRT | 


| IEFWSTRT 


lEFSELCT 




lEFSTERM 


GO 








IEFWSWIN j 


j IEFWSWIT 


IEFALOC2 




lEFALOCl 


GO 








IEFWTERM | 


| IEFWTERM 


lEFJTRMl 




IEFJTERM 


GO 








IEFW21SD | 


| IEFW21SD 


lEFSELCT 




lEFSTERM 


GO 


22 


23 




IEFW22SD j 


j IEFW22SD 


lEFSTERM 




lEFSTERM 


GO 


46 






IEFW23SD j 


| IEFW23SD 


lEFJTRMl 




IEFJTERM 


GO 


46 






IEFW31FK j 


| IEFW31SD 


lEFJTRMl 














IEFW31SD | 


| IEFW31SD 


IEFJTRM2 




IEFJTERM 


GO 


46 






IEFW41SD | 


| IEFW41SD 


IEFALOC5 




IEFALOC2 


IEFALLOC 








IEFW42SD | 


| IEFW42SD 


lEFSTERM 




lEFSTERM 


GO 


46 






IEFXAFAK | 


| IEFXA 


lEFSELCT 




lEFSTERM 
IEFALOC2 


IEFALERR 




35 




IEFXAMSG | 


| IEFXAMSG 


lEFALOCl 




lEFALOCl 


IEFALLOC 








IEFXCSSS j 


| IEFXA 

| IEFXABOO 


lEFALOCl 




lEFALOCl 


IEFALLOC 


32,38 


33 




IEFXH000 | 


| IEFXH000 


IEFX5000 
IEFALOC3 




IEFALOC2 


IEFALLOC 








IEFXJFAK | 


| IEFXJOOO 


IEFALOC2 
IEFX5000 
IEFALOC3 






IEFALLOC 








IEFXJIMP | 


| IEFXJOOO 


lEFALOCl 




lEFALOCl 
IEFALOC2 


IEFALLOC 


38 






IEFXJMSG | 


| IEFXJMSG 


lEFALOCl 




lEFALOCl 
IEFALOC2 


IEFALLOC 








IEFXKFAK | 


| IEFXK000 








IEFALLOC 








IEFXKIMP j 


j IEFXKOOO 


IEFALOC4 
IEFALOC5 




lEFALOCl 
IEFALOC2 


IEFALLOC 








IEFXKMSG | 


| IEFXKMSG 


IEFALOC4 
IEFALOC5 




lEFALOCl 
IEFALOC2 


IEFALERR 








IEFXTFAK | 


| IEFXTOOO 


IEFALOC4 














IEFXTDMY | 


| IEFXTDMY 


IEFALOC5 




IEFALOC2 


IEFALLOC 









Appendix C: Load Modules and Assembly Modules 103 



Assembly Modules and Control Sections (Part 6 of 7) 



r t 


















Load Modules in 


Which 




Chart Number | 






Assembly 


Modules are Used 


h 




j 




— _ T _ 


— 1 


J Assembly j 


| Control 








H 


Appears As | 


Flow is | 


r~ t 




T — 


| Module Name | Not 

| IEFXTMSG | 


es j Section Name 
| IEFXTMSG 


18K | 
IEFALOC5 | 


44K 


j 100K 
| IEFALLOC 


-+- 


Subr. Block | 


Defined j 


IEFALOC2 


j IEFXTOOD | 


| IEFXT000 


IEFALOC5 | 


IEFALOC2 


| IEFALLOC 




34 | 


43 | 


| IEFXT002 j 


| IEFXT002 


IEFALOC5 j 


IEFALOC2 


j IEFALLOC 






45 | 


j IEFXT003 | 


| IEFXT003 


IEFALOC5 j 


IEFALOC2 


| IEFALLOC 






44 | 


| IEFXVMSG | 


| IEFXVMSG 


IEFALOC4 j 


lEFALOCl 


| IEFALLOC 








| IEFXVNSL |*+* 


** | IEFXVNSL 


IEFALOC4 | 


lEFALOCl 


j IEFALLOC 








| IEFXV001 j 


| IEFXV001 


IEFALOC4 | 


lEFALOCl 


| IEFALLOC 




34 | 


37 | 


| IEFXV002 j 


| IEFXV002 


IEFALOC4 j 


lEFALOCl 


| IEFALLOC 




37 | 


38 | 


j IEFXVFAK | 


| IEFXV001 


IEFALOC2 | 












| IEFX1FAK | 


| IEFXJOOO 


IEFALOC4 j 












| IEFX2FAK j 


j IEFX5000 


IEFALOC4 | 












| IEFX3FAK | 


j IEFWC000 


IEFALOC4 j 








34 | 


40 | 


j IEFX300A | 


| IEFX3000 


IEFALOC2 | 
IEFX5000 | 
IEFALOC4 | 


lEFALOCl 
IEFALOC2 


| IEFALLOC 








| IEFX5FAK | 


| IEFX5000 


IEFALOC2 | 


IEFALQC1 










j IEFX5000 | 


| IEFX5000 


IEFX5000 | 


IEFALOC2 


| IEFALLOC 




34,53 | 


40 | 


j IEFYNFAK | 


| IEFYN 


lEFSELCT | 
lEFALCOl | 
IEFALOC4 | 
IEFALOC5 j 
lEFERROR | 
lEFIDUMP j 
lEFMCVOL j 


lEFALOCl 
lEFERROR 
lEFIDUMP 
IEFALOC2 
lEFMCVOL 


| IEFALLOC 
| lEFMCVOL 








| IEFYN IMP | 


| IEFYN 


lEFSTERM | 


lEFSTERM 


| GO 




46 | 




j IEFYNMSG j 


| IEFYNMSG 


lEFSTERM j 


lEFSTERM 


| GO 








| IEFYPJB3 j 


| IEFYP 


lEFSTERM | 


lEFSTERM 


| GO 




45,47 | 


49 | 


j IEFYPMSG | 


| IEFYPMSG 


lEFSTERM j 


lEFSTERM 


| GO 








j IEFYSSMB j 


| IEFYS 


lEFSTERM j 
lEFSELCT | 
lEFALOCl j 
IEFALOC4 j 
IEFALOC5 | 
lEFJTRMl | 
lEFERROR | 
lEFIDUMP | 
lEFMCVOL j 


lEFSTERM 
lEFALOCl 
IEFALOC2 
lEFERROR 
lEFJTERM 
lEFIDUMP 
lEFMCVOL 


j GO 

j lEFIDUMP 
j IEFALLOC 

| lEFMCVOL 








| IEFZAFAK | 


| IEFZA 


lEFSTERM j 


lEFSTERM 










| IEFZAJB3 j 


| IEFZA 


lEFJTRMl | 


lEFJTERM 


| GO 




46 | 


51 | 


| IEFZGJB1 j 


| IEFZGJ 


lEFJTRMl j 


IEFCNTRL 


| GO 




47 | 


53 | 


j IEFZGMSG | 


| IEFZGMSG 


lEFSTERM j 
lEFJTRMl | 


lEFSTERM 
lEFJTERM 


| GO 








j IEFZGST1 | 


| IEFZG 


lEFSTERM | 


lEFSTERM 


| GO 




46,50 | 


52 | 


| IEF2GST2 | 


| IEF2G2 


lEFSTERM j 


lEFSTERM 


| GO 




46 | 




| IEFZHFAK j 


| IEFZPOQM 


lEFJTRMl j 


lEFJTERM 










| IEFZHMSG | 


| IEFZH 


lEFSTERM j 
lEFJTRMl j 


lEFSTERM 
lEFJTERM 


| GO 




46 | 




| IEF04FAK J 


| IEFSD004 


IEFALOC5 | 












j IEF08FAK | 


| IEFSD008 


lEFSTERM j 
IEFINTFC | 
IEFJTRM2 j 


lEFSTERM 










| IEF09FAK | 


| IEFSD009 


lEFSTERM | 
IEFINTFC j 


IEFCNTRL 










| IEF23FAK | 


| IEFW23SD 


IEFINTFC | 












| IEF35DUM | 




lEFJTERM | 


IEFCNTRL 


| GO 








| IEF7KGXX j 


| IEFKG 


IEFINTFC j 


IEFCNTRL 


| GO 








j IEF7KPXX j 


| IEFVHM 


IEFCOMMD | 


IEFCOMMD 


j GO 




16 | 




| IEF7K1XX | 


| IEFK1 


IEFVH1 | 


IEFVH1 


| IEFVH1 




14 | 




j IEF7K2XX j 


| IEFK2 


IEFVH1 | 


IEFVH1 


| IEFVH1 




14 | 




| IEF7K3XX | 


| IEFK3 


IEFVHN | 


IEFVril 


j IEFVH1 




14 | 




L J. 


J. J 


L J.. 




J. 


.1. 


i. 


J 



104 



Assembly Modules and Control Sections (Part 7 of 7) 



Assembly 
Module Name 



Notes 



Control [~ 
Section Namej 
+- 



Load Modules in Which 
Assembly Modules are Used 

r t 

18K I 44K I 100K 



j Chart Number j 
j. T ^ 

H Appears As | Flow is 

I Subr. Block j Defined 

4 + 



IEZDCODE 
IEZNCODE 



IEZDCODE 
IEZNCODE 



IEZDCODE 

IEFVINA 

IEZNCODE 



IEZDCODE 

IEFVINA 

IEZNCODE 



GO 
GO 



Notes : 



♦Assembly modules in SYS1. NUCLEUS data set. 
♦♦Modules are assembled during system generation. 
♦♦♦Assembly modules in SYS1.SVCLIB data set. 

♦♦♦♦IEFACTFK may replace IEFACTLK, IEFACTRT, and IEFWAD during system generation. 
♦♦♦♦♦IEFXVNSL is a simple exit and return subroutine that the user may replace with his 
own subroutine for processing nonstandard labels. 



Appendix C: Load Modules and Assembly Modules 105 



Control Sections and Assembly Modules 



The following list provides a cross-reference between job management control section 
(CSECT) names, which appear in alphameric order, and the corresponding assembly module 
names. Control section names are also listed in the preceding assembly module to load 
module cross reference table. 



C SECT NAME 

DEVMASKT 

DEVNAMET 

IEEBB1 

IEEBB1 

IEEGESTO 

IEEGK1GM 

IEEICCAN 

IEEICCAN 

IEEICN01 

IEEICN01 

IEEICRDR 

IEEICWTR 

IEEIC1PE 

IEEIC2NQ 

IEEIC3JF 

IEEMCREP 

IEEQOT00 

IEEVSMSG 

IEFACTLK 

IEFACTLK 

IEFACTRT 

IEFBR14 

IEFCVOL1 

IEFCVOL2 

IEFCVOL3 

j IEFDEVPT 
IEFIDMPM 
IEFIDUMP 
IEFIDUMP 
IEFINTQS 
IEFKG 
IEFKG 
IEFK1 
IEFK1 
IEFK1MSG 
IEFK2 
IEFK3 
IEFPRES 
IEFQMSSS 

I IEFSCAN 
IEFSD001 
IEFSD002 
IEFSD003 
IEFSD004 
IEFSD004 
IEFSD006 
IEFSD007 
IEFSD00 8 
IEFSD008 
IEFSD009 
IEFSD009 
IEFSD010 
IEFSD011 
IEFSD012 
IEFSD017 
IEFSD035 
IEFSD059 
IEFSD088 
IEFSD08 9 



ASSEMBLY MODULE NAME 

IEFWMSKA 

IEFWMAS1 

IEEMCRFK 

IEEMCR01 

IEEGES01 

IEEGK1GM 

IEEILCDM 

IEEILC01 

IEECNDUM 

IEEICN01 

IEEREADR 

IEEWRITR 

IEESTART 

IEEIC2NQ 

IEEIC3JF 

IEEMCREP 

IEEQOT00 

IEEVSMDM 

IEFACTLK 

IEFACTFK 

IEFACTRT 

IEFBR14 

IEFMCVOL 

IEFMCVOL 

IEFMCVOL 

IEFDEVPT 

IEFIDMPM 

IEFIDFAK 

IEFIDUMP 

IEFINTQA 

IEFKGDUM 

IEF7KGXX 

IEF7K1XX 

IEFK1AK 

IEFK1MSG 

IEF7K2XX 

IEF7K3XX 

IEFPRES 

IEFQMSSS 

IEFSCAN 

IEFSD001 

IEFSD002 

IEFSD003 

IEFSD004 

IEF04FAK 

IEFSD006 

IEFSD007 

IEFSD008 

IEF08FAK 

IEFSD009 

IEF09FAK 

IEFSD010 

IEFSD011 

IEFSD012 

IEFSD017 

IEF35DUM 

IEFSD059 

IEFSD088 

IEFSD089 



CSECT NAME 

IEFSD090 

IEFSD094 

IEFSD095 

IEFSD89M 

IEFSEPAR 

IEFSGOPT 

IEFVDA 

IEFVDA 

IEFVBBSD 

IEFVEA 

IEFVEA 

IEFVFA 

IEFVFA 

IEFVFB 

IEFVHB 

IEFVGI 

IEFVGK 

IEFVGM 

IEFVGM 

IEFVGM 

IEFVGM1 

IEFVGM2 

IEFVGM3 

IEFVGM 4 

IEFVGM5 

IEFVGM6 

IEFVGM7 

IEFVGM 8 

IEFVGM9 

IEFVGM10 

IEFVGM11 

IEFVGM12 

IEFVGM13 

IEFVGM14 

IEFVGM15 

IEFVGM16 

IEFVGM17 

IEFVGM18 

IEFVGM70 

IEFVGM71 

IEFVGM78 

IEFVGS 

IEFVGT 

IEFVHA 

IEFVHA 

IEFVHAA 

IEFVHAA 

IEFVHB 

IEFVHB 

IEFVHC 

IEFVHC 

IEFVHCB 

IEFVHCB 

IEFVHE 

IEFVHE 

IEFVHEB 

IEFVHEB 

IEFVHEC 

IEFVHEC 



ASSEMBLY MODULE NAME 

IEFSD090 

IEFSD094 

IEFSD095 

IEFSD089 

IEFSEPAR 

IEFSGOPT 

IEFDAFAK 

IEFVDA 

IEFVDDUM 

IEFEAFAK 

IEFVEA 

IEFVFA 

IEFFAFAK 

IEFVFB 

IEFVHB 

IEFVGI 

IEFVGK 

IEFVGMSS 

IEFVGMEP 

IEFGMFAK 

IEFVGM1 

IEFVGM2 

IEFVGM 3 

IEFVGM4 

IEFVGM 5 

IEFVGM6 

IEFVGM7 

IEFVGM8 

IEFVGM 9 

IEFVGM10 

IEFVGM11 

IEFVGM12 

IEFVGM13 

IEFVGM14 

IEFVGM15 

IEFVGM16 

IEFVGM17 

IEFVGM18 

IEFVGM70 

IEFVGM71 

IEFVGM78 

IEFVGS 

IEFVGT 

IEFHAFAK 

IEFVHA 

IEFHAAFK 

IEFVHAA 

IEFVHB 

IEFHBFAK 

IEFVHC 

IEFHCFAK 

IEFHCBFK 

IEFVHCB 

IEFVHE 

IEFHEFAK 

IEFVHEB 

IEFHEBFK 

IEFVHEC 

IEFHECFK 



106 



CSECT NAME 

IEFVHF 

IEFVHF 

IEFVHG 

IEFVHH 

IEFVHH 

IEFVHHB 

IEFVHL 

IEFVHL 

IEFVHM 

IEFVHM 

IEFVHN 

IEFVHQ 

IEFVHR 

IEFVH1 

IEFVH2 

IEFVINA 

IEFVINB 

IEFVINC 

IEFVIND 

IEPVINE 

IEFVJA 

IEFVJA 

IEFVJMSG 

IEFVJ 

IEFVJ 

IEFVKMSG 

IEFVMCVL 

IEFVK 

IEFVMQMI 

IEFVMPOQ 

IEFVM1 

IEFVM2 

IEFVM3 

IEFVM4 

IEFVM5 

IEFVM6 

ILFVM6 

IEFVM76 

IEFVM7 

IEFV15XL 

IEFWAD 

IEFWA000 

IEFWA000 

IEFWA002 

IEFWA7 

IEFWCOOO 

IEFWCOOO 

IEFWCOOO 

IEFWC002 

IEFWDMSG 

IEFWD000 

IEFWDOOO 

IEFWDOOl 

IEFWSDIP 

IEFWSTRT 



ASSEMBLY MODULE NAME 

IEFHFFAK 

IEFVHF 

IEPVHGSS 

IEFVHH 

IEPHHFAK 

IEFVHHB 

IEFVHL 

IEFHLFAK 

IEFHMFAK 

Ii^F7KPXX 

IEFVHN 

IEFVHQ 

IEFVHRSS 

IEFVH1 

IEFVH2 

1EFVINA 

IEFVINB 

IEFVINC 

IEFVIND 

IEFVINE 

IEFJAFAK 

IEFVJA 

IEFVJMSG 

IEFVJIMP 

JTERM030 

IEFVKMSG 

IEFVMLSl 

IEFVKIMP 

IEFVMLSl 

IEFVMLSl 

IEFVMLSl 

IEFVM2LS 

IEFVM3LS 

IEFVM4LS 

IEFVM5LS 

IEFVMLK5 

IEFVMLS6 

IEFVM76 

IEFVMLS7 

IEFV15XL 

IEFWAD 

IEFWAFAK 

IEFWA000 

IEFWAOOO 

IEFWA000 

IEFWCFAK 

IEFWCIMP 

IEFX3FAK 

IEFWCIMP 

IEFWDOOO 

IEFWDFAK 

IEFWDOOO 

IEFWDOOl 

IEFWSDIP 

IEFWSTRT 



CSECT NAME 

IEFWSWIT 

IEFWTERM 

IEFW21SD 

IEFW22SD 

IEFW23SD 

IEFW23SD 

IEFW31SD 

IEFW31SD 

IEFW41SD 

IEFW42SD 

IEFXAMSG 

IEFXA 

IEFXA 

IEFXABOO 

IEFXHOOO 

IEFXJMSG 

IEFXJOOO 

IEFXJ000 

IEFXJOOO 

IEFXKMSG 

IEFXKOOO 

IEFXTDMY 

IEFXTMSG 

IEFXT000 

IEFXT002 

IEFXT003 

IEFXT000 

IEFXVMSG 

IEFXVNSL 

IEFXVOOl 

IEFXVOOl 

IEFXV002 

IEFX3000 

IEFX5000 

IEFX5000 

IEFX5000 

IEFYNIMP 

IEFYNMSG 

IEFYN 

IEFYN 

IEFYPM3G 

IEFYP 

IEFYS 

IEFZA 

IEFZA 

IEFZGMSG 

IEFZGJ 

IEFZG 

IEFZG2 

IEFZH 

IEFZPOQM 

IEZDCODE 

IEZNCODE 

SPRINTER 



ASSEMBLY MODULE NAME 

IEFWSWIN 

IEFWTERM 

lEFW^lSD 

IEFW22SD 

IEFW23SD 

IEF23FAK 

IEFW31SD 

IEFW31FK 

IEFW41SD 

IEFW42SD 

IEFXAMSG 

IEFXAFAK 

IEFXCSSS 

IEFXCSSS 

IEFXHOOO 

IEFXJMSG 

IEFXJFAK 

IEFXJIMP 

IEFX1FAK 

IEFXKMSG 

IEFXKIMP 

IEFXTDMY 

IEFXTMSG 

IEFXTOOD 

1EFXT002 

IEFXT003 

IEFXTFAK 

IEFXVMSG 

IEFXVNSL 

IEFXVFAK 

IEFXVOOl 

IEFXV002 

IEFX300A 

IEFX2FAK 

IEFX5FAK 

IEFX5FAK 

IEFYNIMP 

IEFYNMSG 

IEFYNFAK 

IEFWTERM020 

IEFYPMSG 

IEFYPJB3 

IEFYSSME 

IEFZAFAK 

IEFZAJB3 

IEFZGMSG 

IEFZGJB1 

IEFZGST1 

IEFZGST2 

IEFZHMSG 

IEFZHFAK 

IEZDCODE 

IEZNCODE 

IEFPRTXX 



Appendix C: Load Modules and Assembly Modules 107 



Appendix D: List of Acronyms 



The following list contains the full name 
associated with each acronym used in this 
publication: 



r t 

| Acronym | Name 



h 



ACB j Allocate control block 

ACT j Account control table 

AVR j Automatic volume recognition 

AVT j Allocate volume table 

AWA j Auxiliary work area 

AWT | Allocate work table 

BPAM j Basic partitioned access method 

CCW | Channel control word 

CLT | Channel load table 

CSCB j Command scheduling control 

I block 

CSECT I Control section 

CVT j Communications vector table 

DADSM J Direct access device space 

j management 

DCB j Data control block 

DEB j Data extent block 

DMT | Device mask table 

DNT j Device name table 

DSCB | Data set control block 

DSNAME j Data set name 

ECB j Event control block 

GDG | Generation data group 

I/O | Input/output 

IPL j Initial program load 

IRB j Interrupt request block 

IWA | Interpreter work area 

JCL j Job control language 

JCT | Job control table 



H 



j Acronym j Name 



JFCB 

JSCB 

KBT 

LCT 

LWA 

NEL 

NIP 

NRWT 

NSL 

PCP 

PDQ 

PDS 

PDT 

PUD 

QSAM 

SCT 

SIOT 

SMB 

SYSGEN 

SYSIN 

SYSOUT 

TCB 

TIOT 

TTR 

UCB 

VCON 

VOLT 

WTO 

WTOR 

WTP 

W1PCB 



Job file control block 
Job step control block 
Keyword branch table 
Linkage control table 
Local work area 
Interpreter entrance list 
Nucleus initialization program 
New reader/writer table 
Non-standard label 
Primary control program 
Passed data set queue 
Partitioned data set 
Parameter descriptor table 
Potential user on device 
Queued sequential access method 
Step control table 
Step input/output table 
System message block 
System generation 
System input device 
System output device 
Task control block 
Task input /output table 
Auxiliary storage address on 
direct access device 
Unit control block 
variable constant 
Volume table 
Write-to-operator 
Write-to-operator with reply 
Write-to-programmer 
Write-to-programmer control 
block 



108 



Charts 



Chart 01. Job Management 



( Initial Entry J 



From initialization 
routine 



(Entry From Scan ] 
(Chart 11) J 







f B2 > f -. 


























v B5 




\ 


Bl 




V_y i- B2 




t B3 




B4 






IEFVHAA 


EOF 


IEFVHA 


Non- 
Control 
Statement 


IEFVHB 


Job 


IEFVHG 






IEFVHF 




EOF Routine 


Interpreter Get 
Routine 


Set Job Failed 
Switch 


PCP/MFT 1 DD* 
Exit To Initiator 


Post Scan 
Routine 








Failed 


DD* 






Enque 


je Pending 




// 
r STMT C2 




C3 




' 
















1 


i ir 


' 


CI 




IEFVHC 




IEFVGM 


^H2) 


Q Q 


C" ) 


Continuation 
Statement Routine 


Interpreter Message 
Processing Routine 






To Interpreter Termination 


1 










Dl 




r D2 








IEFVHM 


Possible 


IEFVHCB 


Read Stmt 
-*0 




Command Statement 
Routine 


Verb Identification 
Routine 




Command 










1 


STMT 








1^ 


' Kl D A 


r E2 




1 


E3 






(m\ Pending 


IEFVHE 




IEFVHL 


' 




w <«u 


Router 


Null Statement 
Routine 


'. 


© 




w* 














' 
















F2 












IEFVHEC 








Job Validity 
Check 






(Q\J 


• 




r G2 






IT 




' 


Job Stmt, 
DD*, or 
EOF 


G3 










IEFVHH 


IEFKG 








Job And Step 
Enqueue 


Interpreter/ 

Initiator 

Interface 
















' 






^ y 


' 




r H2 




No Job T 


o Enqueue 


H3 






o> 








' 


Uy 






IEFVHEB 




IEFVHHB 


\S 






Pre- Scan 
Preparation 






Job And Step 

Enqueue 

Housekeeping 






i- 








' J2 


C B2 J 


' 


Statemen 


t To Scan 





( 5 *" ; 



To Scan Routine 



Charts 109 



Chart 02. Master Scheduler 



( En "' ) 


t/Output 


( E«, ) 




From Inpu 




From 




Supervisor 


Supervisor 


V Bl 




E3 


IEEBA1 03 




IGC0103D 06 


Console 


Process The 


Interrupt 




Mount, Unload, 


Routine 




Vary Commanc 


ip CI 




u a 


( - ) 


C - ) 


To Supervisor 


To Supervisor 


Dl D3 
-^ s-- - -^ 


C Enw ) 


( 


Entry J 




From 








Supervisor 




1 


El 




7 : -3 


IGC03D 04 




IGC0203D 


Master Command 




Display/Stop, 


Excp Routine 




Cancel Command 




Fl 






F3 


( E *" ) 


( E "" ) 


To Supervisor 


To Supervisor 


Gl 


Entry 






From 




Supervisor 


1 


r hi 




IEEBB1 05 




H2 




Master Command 


4 f Entry ^ 


Routine 




rrom inrerprerer 


' 


r J1 




( - ) 


To Supe 


rvisor 



( E„ y ) 


1 


From 
Supervisor 

B5 


IEEBC1PE 07 


External 
Interrupt 
Routine 


' 


C5 


( "' ) 



To Supervisor 



110 



Chart 03. Console Interrupt Routine 



IEEBA1 




Interrupt 
Request 
Block Routine 



( En *y J 



From Supervisor 
H2 



Issue 
Svc 34 






To Supervisor 



Charts 111 



Chart 04. Master Command EXCP Routine 



IGC03D 




Note 1 - If primary or alternate console is in use, 
entry is to IEEMXC01. 

If composite console is in use, 
entry is to IEEMXR01 . 

Note 2 - MCR= master command routine. 



XCTL To Command 
Processing Routine 
(IGC0103D) 



& 



To Supervisor 



112 



Chart 05. Master Command Routine 




©*■ 




To supervisor 



Charts 113 



• Chart 06. Write-to-Operator Routine 



Transfer 
Control 
to WTOR 




To Supervisor 



Note 1 : If primary or alternate console is in use, entry is to IEEWTC00. 
If composite console is in use, entry is to IEEWTR00. 

Note 2: WTP returns to WTO only if message processing was unsuccessful . 



114 



•Chart 07. Write-to-Operator with Reply Routine 



IGC0103E 



Entry 



Pseudo- 
Disable 



Wait for 
Free Buffer 




Turn on 
WTOR 
Switch 



fwV 



B4 



Wait for 
Channel 
End 



Read Reply 
from Console 



Wait for 
Channel 
End 




Yes 

F4 


Move Reply 
to User's Area 


1 


G4 




To Supervisor 



Note 1 : If primary or alternate console is in use, entry is to IEEWTC01 
If composite console is in use, entry is to IEEWTR01. 

Note also that this routine can ABEND to user if parameter list is invalid or 
if reply area is out of bounds. 



Issue 
"Invalid 
Reply" 
Message 



Charts 115 



• Chart 08. Write-to-Prograirnmer Routines (Part 1 of 5) 



IGC0203 
IEFWTPO0 



Entry 



From IGC0003E 




116 



•Chart 09. Write- to- Programmer Routines (Part 2 of 5) 



IGC0203E (Continued) 
IEFWTP00 



Get 224-Byte 
Workarea 



[08G"n 
lfl8HlJ 



-TCP^Type System >MFI 




Get 192-Byte 
Workarea 



Save Size 
of Workarea 



Enqueue 
on WTPCB 



Set Up 

Message 

Length 



Get 256- Byte 
Workarea 



" G2 



G5D 



Charts 117 



Chart 10. Write- to- Programmer Routines (Part 3 of 5) 




■© 



To Supervisor 



Set WTP 

Return 

Indicator 



( M ) 



118 



Chart 11. Write-to-Programmer Routines (Part 4 of 5) 



IGC0303E (Continued) 
IEFWTP01 





Dequeue 
on WTPCB 



Charts 119 



•Chart 12. Write-to-Programmer Routines (Part 5 of 5) 



IGC0403E 

IEFWTP02 



( Entry J 




From IGC0303E 



I/O En 



C3 



Issue WTO 
I/O Error 
Message 



No SMB Available 
Dl 



Adjust 
Reserved 
SMB 
Pointers 



Issue WTO 
for "No 
Record" 
Message 



Set Up SMB 
with "No 
Record" 
Message 



" Gl 



To IGC0303E 



Free 
Workarea 




To IGC0103E 



Set Return 
from WTP 
Indicator 



120 



Chart 13. External Interrupt Routine 



c 



Entry 




3 



From 
Supervisor 





Mark UCB 
Pointer Table 
Adjust Primary 
UCB 



D4 



Mark UCB 
Pointer Table 
Adjust Alter 
UCB 




To Supervisor 



Charts 121 



Chart 14. Interpreter Control Flow 



Job Statement 
Processor 



C *"' ) 



dh* 



IEFK1 



Special PCP 

Interpreter 

Initialization 



IEFVH1 



Interpreter 
Initialization 



IEFVH2 



Open Reader 
And Procedure 
Library 



Link To Pres 



®- 



Control Routine 



JCL Scan 

Routine 



Exec Statement 
Processor 



Interpreter 
Termination 



H4 



DD Statement 
Processor 



Wait For 
Start RDR 



122 



Chart 15. Interpreter Initialization 




i A3 

f Entry j 



^ B3 



Store Input 
Parameters 



C3 



GETMAIN For 
Interpreter Work 
Area 



GETMAIN For 
Local Work Area 



E3 



Generate Unique 
Name And 
Process SYSGEN 
Options 



Open Input 
Stream 



Open PROCLIB 
PDS 



v no 

( " ) 



Charts 123 



Chart 16. Interpreter Control Routine 



/ Console / 

j ... 1 




/ System 
/ Input 
/ Device 


/ 

C3 




System 
Output 
Device 




1 


C2 


l f 




02 


08 


«-© 




Master 
Scheduler 


Interpreter 






1 


' 


D3 




D4 




14 


./ 


/ 




Initiator/ 
Terminator 


/ 




/ 


/ 






' 


E3 




Jab 
Step 
Output 
Device 


E4 




Job Step 


./ 


/ 




/ 


/ 



© 



124 



Chart 17. Interpreter Scan Routine 



ci 



Expected 

Continuation 

Check 



©- 



Job V G2 
f TolEFVJA ) 



C^v From interpreter 
Entry ) control routine 



Scan 
Preparation 



Overriden 
procedure 



jr C3_ 



Verb 
Identification 



© 



Branch Routine 



Delimiter 
Processing 
Routine 



Scan 
Termination 



Exec y G3 
TolEFVEA 



Key Routine 
1 



"\ To in 
TolEFVHF J contr 



terpreter 
trol routine 



( TolEFVEA ) f TolEFVDA ) 



DP f G4 
TolEFVDA 



To JCL statement processor 



Note - Exits to Interpreter control 
routine if continuation or 
overridden procedure card 
is expected, or if error is 
detected on DD card . 



Charts 125 



chart 18. JCL statement Processors 



Note - This chart shows control flow in all three 
statements processors. Each statement 
processor is entered from the JCL scan 
routine and passes control to the control 
routine . 

Each statement processor includes several 
keyword processors, most of which use 
IEFVGT and IEFV as subroutines. 



c 



Entry 



:: ?i 



Get Parameter 



IEFVGT 



Test And Store 



-*© 



Keyword Processor 





IEFV 


Symbol Dictionary 
Reference 





Cleanup 



t H3 



Message Routine 



126 



•Chart 19. In-Stream Procedure Routines 



IEFVINA 




\C2 

First Time \vNo 
S- Through y^ 




Build 

Directory 

Entry 



Get JCL 

Statement 





Exit 







IE ZNCODE % J3 



Compress 




Charts 127 



Chart 20 . Interpreter Termination 



C3 



CjEZ) 



Freemain For 
IWA And Local 
Work Area 



*-A 



Close Input 
Stream 



f F3 



Close Proclib 
PDS 



/ 



> 



( IEFK3 J 



128 



Chart 21. Initiator/Terminator 



FV— 








GZ/ 


( 


\ 


A3 


rpreter 




Entry 




\ 


From lnt< 

' B3 




14 






Initiator 
Control 








1 


C3 






27 






Allocation 
And Setup 








' 


r D3 






39 






Step 
Initiation 






fo Pr 


1 


E3 






Ex 
ocessi 


• ) 

ng Program 



C En,,y ) 



From Supervisor Or An 
Init/Term Routine 



ir H3 



( " ) 



To Interpreter Or 
Initiator Control 



Charts 129 



Chart 22. Initiator Control 




( E * ) 




From nterpreter or 
step termination 
routine 
" B3 


IEFW21SD 16 




System Control 
Routine Rtn. 




C3 




IEFVK 17 




Execute Stmnt 
Conditional 
Execution Rtn. 




1 


' D3 




IEFVM1 18 




JFCB 

Housekeeping 

Routines 






, E3 




C - ) 




To alloc 
and setu 


ation 
P 





Entry is from the interpreter when a JOB, 
NULL, DD *, or DD DATA statement 
is encountered in the input job stream 



130 



Chart 23. System Control Routine 



( Entry J 



From interpreter 
or step termination 
I ,B1 



Increment 
Step Number 
By One 










C2 


/\ C3 
>/ls Job >v 


Yes 






C4 






Place Job Na 
IntoSJQ 


me 




IEEGK1GM 


\ Yes 


WTO Job Name 
Started 


/ 




>v Switch y< 

\On/ 

Xno 





















Remove Job Name 
From SJQ 



To execute statement 
conditional execution 
routine IEFVK 



To step 
termination 



Charts 131 



Chart 24. Execute Statement Conditional Execution Routine 



E>- 




To JFCB Housekeeping 
Routines 



VK650 



IEFQMSSS 



Place Appr SCT 
Into Storage 
Area 



IEFQMSSS 



Place First SCT 
Into Storage 
Area 




VK400 >^Do\C;i 

, Results Of \ Yes 
sCompare Agree, ^ 
With Cond Oper 



No 





To JFCB Housekeeping 
Routines 



H2> 



To Step Termination 
Routine 




Get Next 
Cond Code 



6 



132 



Chart 25. JFCB Housekeeping Routines 




Allocate 

Processing 

Routine 



D2 



IEFVM2 



22 



Fetch DCB 

Processing 

Routine 



To allocation 
control routine 



D3 



IEFVM3 



23 



GDG Single 

Processing 

Routine 



© 



IEFVM4 



GDG All 
Processing 
Routine 



IEFVM5 



Patterning DSCB 

Processing 

Routine 



20 F3 



Mount Control 
Volume Routine 



Charts 133 



Chart 26. JFCB Housekeeping Control Routine 




Fetch DCB 
Processing Routine 



Note 1 Control is passed 

to the JFCB housekeeping 
allocate processing routine 



Set JFCB HSK 
Indr In SCT To 
Complete, 
Release Storage 



Set Action Code 
Into LCT Table 



To Allocation 
Control Rtn 



134 



Chart 27. Mount Control Volume Routine 



Entry 1 




Entry 2 



Entry 3 





Dl 


Assign Records 


On JCB Queue 


And Create Dummy 


La, jct, dcb, 


SIOT 




El 


Create 


Dummy 


JFCB 


' 


F1 


Create 


Dummy 


Volt 


' 


Gl 




( IEFCVOL2 J ( IEFCVOL3 J 



" B3 



<Fre 
Occupied By 
Schedulei 
Look-up 
Table 




Restore All 
Pointers To 
Original LCT, 
JCT, SCT, 
SIOT JFCB 



Update SMB 
Pointers In 

La And sa 




Update Original 
La With Error 
Count And 
Current SMB 
Address 




rreemam \ 
For Storage 
Obtained By 
IEFVM1 Before, 
cate / 



G5 



( 5> " ) 

To step termination 



J3 



( *' ) 



Charts 135 



Chart 28. Allocate Processing Routine 




B2 



Read JFCB Into 
Storage If Not 





Get Vol Info For 
JFCB And SCT 
From VCB 



HD 



Place Referenced 
SIOT And JFCB 
Into Storage 
Area 



Error 




Set Intra Step 
Subaltoc Bit In 
SIOT 





Read In 
Corresponding 
PDQ Block 



1=3 



Place Referenced 
SIOT And JFCB 
Into Storage 
Area 



XCTL To 
IEFMCVOL To 
Mount CVOL 



D4 



Compare SIOT 
Addr In PDQ 
Entry With 
Referenced SIOT 



D5 



Set Ref DD Into 
Current SIOT For 
Allocate 






Set Ref DD Into 
-»H Current SIOT For 
Allocate 



Get Vol Info For 
JFCB And SCT 
From JFCB 



Normal 



^ 



All Entries/exits are from/to the JFCB housekeeping control routine 



136 



Chart 29. Fetch DCB Processing Routine 



C Entry ) 




From JFCB housekeeping 
control routine 

B3 


Initialize 

SIOT 

Fields 




' 


C3 




Place JFCB And 
Referenced SIOT 
Tables Into 
Storage Area 




1 


' 


< 

1 


1^1 


' 


D3 


Update Volt 
With New Vol 
Ser, Store Volt 




1 


1 


c 


[%) 


VM127 


E3 


( Return 





To JFCB housekeeping 
error message 
processing routine 



To JFCB housekeeping 
error message 
processing routine 



To JFCB housekeeping 
control routine 



Charts 137 



Chart 30. GDG single Processing Routine 



( Entry J 



From JFCB housekeeping 
control routine 
1 



Place 
JFCB Into 
Storage 
Area 




Assign Record, 
Clear Storage 
For New TBL 



6 



Assign Record, 
Clear New TBL 
Update, Write 
Out Old TBL 



VM7158 



\^y 



Insert GDG 
DSNAME Into 
Table And SCT, 
Update Count 



Is 

Name 
Valid 



Set Error 
Message 
Code 



Setup Member 
No. And New 
Bias Count 
Store GDG 
Bias Count TBL 



*® 








No 




' 


F3 


Found 


Search PDQ 
For DSNAME 




Entry 






Not Founc 


\ 


/M7182 /J 


V G3 




VM7184 v 



Fill In JFCB 
With Vol ID'S 
Build Volt 



[ Return J 

To JFCB housekeeping 
control routine 



H4 
VM7188 



Set Up 
For Error 
Return 



138 



Chart 31. GDG All Processing Routine 



f Entry J 



VM7208 



From JFCB housekeeping 
control routine 



Initialize 
GDG Index 
Set Up DSNAME 
In JFCB 




VM7YA0 



Update DD 
Number Count In 
Work Area 



Set Chain 
Pointer, Store 
Completed SIOT 



Assign Storage 
Space For New 
SIOT And JFCB 



Successful 



VM7222J' 



Set Vol IDS 
From VCB Into 
JFCB 



G2 



Make PDQ Entry 
For GDG All 
Member DS If 
Pass Specified 




No 



Update JFCB, 
SIOT. Write Out 
JFCB 



Issue A Locate 
Macro 




15 \ 

<- i nere Another's. 
v. GDG Index^/ 



Issue A Locate 

Macro 

Instruction 



Successful 



©- 



Set Up Error 

Message 

Indication 



Set Chain 
Pointer, 
Store SIOT 



Othe 



VM7250 



For Each SIOT 
Read In, Update 
Sep, AFF Fields, 
Chain And Store 
SIOT 



-*4 Return ) 



Error 



To JFCB housekeeping 
control routine 



© 



Charts 139 



Chart 32. Patterning DSCB Processing Routine 



C '"" ) 



From JFCB housekeeping 
control routine 



Place JFCB 
Into Storage 
If Not 
Already There 



Issue Locate 
Macro 




Error 



Merge DSCB 
With Overrides 
In JFCB 



( Return } 

To JFCB housekeeping 
control routine 




©-* 



Set Up 

Error Message 

Displacement 



140 



Chart 33. Error Message Processing Routine 




From another JFCB 
housekeeping routine 

B3 



Load Msg Addr, 
Length. Set Up 
To Print Msg 



C3 



Issue Error Message 



Release Storage 



VMMSGCir 



Set Job- 
Failed IndicatorX 
In JCT, 
Error Code 
In Let 



To step termination 
routine 



Charts 141 



Chart 34. Allocation and Setup 



( E "'" 3 



Ei initiator 
rol 
B3 
28 



Allocation 
Control Routine 



Demand 

Allocation 

Routine 






E3 


IEFX5000 33 


Decision 

Allocation 

Routine 


' 


F3 


IEFWC000 34 


TIOT 

Construction 

Routine 


' 


G3 


IEFWDOO0 35 


External Action 
Routine 


1 


H3 


IEFXT000 36 


Space Request 
Routine 


I - 


C - ) 



Automatic 

Volume 

Recognition 



To step initiation 



142 



Chart 35. Allocation Control Routine 




From JFCB 
housekeeping 
control routine 




C3 



ToTIOT 

construction 

routine 



Get Storage 
For Tables 
Initialize 
Pointers 



XAA030 



D4 



Place VOLTS and 
SIOTS Into 
Storage Area 



To demand 
allocation 
routine 



Charts 143 



Chart 36. Demand Allocation Routine 



IEFWA7 



( En^y J 



From allocation 
control routine 

i 113 



Build 
Work Table 



XBF300 



Resolve 
Volume 
Affinities 



XCF100 



Calculate Data 
Set Device 
Requir 



Construct 
Channel Load 
Table 



XCF300 



Allocate 
Resident Direct 
Access Devices 
Requested By 
Vol Serial 



Perform Device 
Range Reduction 



XCF890 



Allocate Sysin 
And Reserved 
Tope Devices 



XDF100 



Allocate 
Specifically 
Requested 
Devices 



CEJ 



Exits are to the decision allocation routine 
(or AVR when included in configuration) 
if allocation is incomplete. 

The TIOT construction routine if allocation 
is complete. 



144 



Chart 37. Automatic Volume Recognition (IEFXV001) 



(Demand Allocation] 




Get Next UCB 





<' D3 



( TIOT Construction I 



IEFXV002 31 



Read The Serial 




Obtain Devices 




Request Volumes 
From Operator 



Wait For Device- 
End I/O Interrupt 



©- 



External Action 



Notify Operator 
And Unload 
Device 




o 








No 




No 




' 


H3 


\ H2 




External Action 


\ 


Unload The Device 


table^ 




* 


y 









— © 



< Decision \ 

Allocation J 




Point To First UCB 



IEFXJIMP 'r D5 



( Cancel Job J 





Charts 145 



Chart 38. Automatic Volume Recognition (IEFXV002) 



f Automatic ^\ 

Volume J 

V Recognition y 


1 

T B2 


Initialize 
DEB And IOB 


1 a 


Issue Channel 
Command 


\ 


' D2 


Wait For I/O 
Completion 




Set Error 
Return Code 



Nonstandard 
Label Routine 



Set Vol 


ume 




No 


UCB 








H2 




' 








( Return ) 



t4 

-M Return ) 



146 



Chart 39. Obtain Devices 



c 



Entry 



Count 

Available 

Devices 




Allocation Error 
Recovery 



Identify 
Devices To Be 
Unloaded 



External Action 



Unload 
Necessary Ready 



4D 



(Allocation ^\ 
Control J 



Charts 147 



Chart HO. Decision Allocation Routine 



EFX 5000 A 2 



From demand allocation routine 
or automatic volume 
recognition routine XGGC25 




Calc Potential 
Users Per 
Device 



XIIC30 




Allocation 
_5,3 complete 



Perform 

Non-unique 

Allocation 

I Normal 



Comp 



Perform Device 
Strikeout 



X GGG40 \ < 



XGGG50 




Perform 

Separation 

Strikeout 



Error 



Complete 

m> 

To TIOT 

construction 

routine 



4E> 

To steo 

termination 

routine 



Restore 
Primary Bit 
Pattern 



-© 



148 



Chart 41. TIOT Construction Routine 



35 B3 



E> 



IEFWC0O0 



( Entry J 



XLM001 



From allocation control routine, 
demand allocation routine, 
decision allocation routine, or 
automatic volume recognition routine 
B2 



Get Storage 
For TIOT 



XLM020 



C2 



Initialize Loop 
To Build TIOT 



XLM032 




XLMUO 



Process Public 
Volume Request 



XNNOOO 



Build DD Entry 
For TIOT 



Outstanding public volume 
requests are resolved here. 




To External 
Action Routine 



Charts 149 



Chart 42. External Action Routine 




XPS090 



From TIOT 

construction routine, 
space request routine, 
automatic volume 
recognition routine, or 
DADSM error recovery routine 
Note 1 

B2 



Issue 

Dismount 

Messages 



Issue 

Mount 

Messages 



Note 2 



Perform 
Verifications 



Note 1 Includes a scan to determine 
if the required volumes are 
mounted on unallocated devices. 

Note 2 Unload commands from master 

scheduler are honored. UCB'S are 
updated if required. 

Note 3 The step is complete when all 

setup messages have been issued 
and verification has been performed 
Counts in the SCT control this 
mechanism . 

Note 4 Either of two events is waited upon . 
Issuance of a cancel command or 
a device being made ready . 




150 



Chart 43. Space Request Routine 



IEFXT000" A3 



Entry 



From external 
action Routine 





Charts 151 



Chart 44. DADSM Error Recovery Routine 




No 
XUUJOO ♦ [i3 



B4 

< Compress \ 
TIOT ) 

Routine y 



< Space Request \ 
Routine J 




HjD 



152 



Chart 45. TIOT Compression Routine 



43 B3 
43 E3 



EH 

EFX1 

c 



IEFX T002 j 

Entry 



XTTROO 



J> 



Compress 
TIOT 



XTTMBO 



Non -recoverable 

Error 

To Step 

Termination 

Routine 




Update 
Scratch Vol 
Information 
In JFCB 



XTTPOO 



_D1 



Write 
Messages 
On Sysout 



To Step 
Initiation 



Charts 153 



Chart 46. Step Initiation 



[_D3 



c 



Entry 



SD4000 ^ 



) 



Write Out 
Scheduler 
Messages 
For Step 



SD4100 I 



Set Up UCB 
Pointer For All 
Data Sets Going 
To Sysout 



SD4V20 t 



Store LCTJCT, 
Release Storage 
They Occupied 



SD 4200 j 



Compute, Get 
P/P Storage 
Needed By 
The System 



SD4240 j 



Move TIOT To 
Upper Storage, 
Store TIOT 



Set UpXCTL 
Parameters 
And Parm Info, 
Store SCT 



SD4300 \ r 




During step execution, processing 
program (P/P) storage is needed for 

- A steplib or joblib DCB, if present 

- A fetch DCB, if present 

- An XCTL parameter list 

- Parm field information 

- A step TIOT 

- A P/P register save area 



SD/- 400 t K3 



To Processing Program 



154 



Chart 47. Termination 







Entry 


y~ 






u 


B2 










IEFSD011 








Step Termination 
Entrance 








Abnormal 
H' Termination 


C3 








IEFW42SD 


C2 


IEFIDUMP 






Step Termination 
Initialization 


Indicative Dump 












Abnorma 1 
Termination 




Normal 
Termination 

V D2 


D3 




D4 




D5 




IEFRPREP 


Dl 




IEFYNIMP 


__ 


IEFYPJB3 




IEFZGST1 




IEFZGST2 








Restart Preparation 


Step Termination 
Control Routine 


Step Termination 
Data Set Driver 


Disposition 
Subroutine 


Una 1 location 
Subroutine 








X 










Abnormal Te 
Or Restart 


"ruination 








1 








H2I 

Restart Or Abnormal 




J> 




' 




El 




' 


E2 




Termination With More 
Steps 






E5 




IEFACTLK 






IEFVJIMP 






IEFZHMSG 




User's Accounting 
Routine 


Job Statement 
Condition Code 
Routine 


Message Subroutine 




















' 












i F2 












IEFW22SD 


+ 


F3 






Step Termination 
Exit 


C - ) 


To Initiator Or Interpreter 



















Step Termination 



Job Termination 



From Interpreter 



(«, ) 


Gl 


C <-> ) 


From step termination 
control routine when there is 
no restart and there are 






' 


HI 


0— 


H2 


no more steps 

H3 






H4 


IEFW23SD 




IEFZAJB3 




IEFZGJB1 




IEFZHMSG 


Job Termination 
Entrance 


Job Termination 
Control Routine 


Disposition And 

Unallocation 

Routine 


Message 
Subroutine 


. ^ 














' 


J2 












' 


J1 








To Interpreter 




IEFACTLK 




IEFW31SD 


J3 




User's Accounting 


Job Termination 
Exit 




v - ; 




* 

















Charts 155 



Chart 48. Step Termination Routine 



23 E2 



From supervisor 
after P/P completion 
or an Inif/Term routine 
when an error condition exits 




YN0203 / \ CI 
Had 
TIOT Been 
Build 



IEFACTLK 

YN0049 / Is "v. B3 

here A >s. No 

User's Acct 



Move Return 
Code From 
TCB To SCT 



YN0224 S \E1 

Normal ""\. No 




YN0240 /\ Gl 
Any 
SIOTS For 

Step 



IEFYP 



Disposition And 
Unal location 
Processing 



YN0260 




User's 

Accounting 

Routine 



Interpreter 
Find Job Or 
s Null Stmnt 

X 



W22SD 




Reinitialize 
Main Storage 




To interpreter 
control routine 



To initiator/ 
terminator 
system control 

(More steps 
had been 
interpreted) 




156 



Chart 49. Restart Preparation Routine 






rom 

EFYNIMP 
(Step termination) 




Save Queue 
Indicators 




Update 
Displacement 
Status: New To 
Delete, Old To 
Keep 



Update Step 
Number In PDQ 
Set Pass Bit 



Set No Restart 
Indicators In 
JCT And LCT 



I " 



CZJ 



TolEFYNIMP 



Update 

Displacement 

Status: 

All To Keep 



Set Return 
Code X '08 
In LCT 



( " ) 



TolEFYNIMP 



Charts 157 



Chart 50. Job Statement Condition Code Routine 



IEPVJ A2 

( Entry j 



OnD 



To step 

termination 

routine 




Issue Message 



158 



Chart 51. Job Termination Routine 



48 
D3 

iIfza 



C ^ ) 



ZAA100 y 



From interpreter control 
routine or step termination 
routine 



'getmain\ 

Save \ 
(Area, PDQ, And ^ 



For Reg. Save 



v Di$p/Unalloc 
k Work Area 



/ 




>*M$ 



IEFZA 



Read PDQ 
Directory Block 



ZAA3150 



IEFZA 



Read PDQ Entry 
Block 



©— 




£H 



ZAA520 " 



IEFZG 



Job Terminate 
Srt Cleanup 



ZAA600jr 



Jl 
FREEMAIN \. 



/ 



IEFACTLK 




User's Accounting 
Routine 



^ 




ZAA400 " 



Set Up La 
Parameters 




Turn On D.A. 
Switch 



ZAA420 ir 



IEFZG 



Perform Disp And 
Unallocation 



((34) »- 

ZAA330 \< 



Increment Data 
Set Pointer 



— © 



To interpreter control 
routine at IEFSD008 



To interpreter control 
routine at IEFSD008 



Charts 159 



Chart 52. Disposition and Unallocation Subroutine -- Entry From Step Termination Routine 



ZHOBlOv Jl 



Process Delete 
Disposition 




< " ) 

To Step Termination 
Routine 



Note 1- The unallocate switch is set 
once for each step, by the 
data set driver routine. 
This occurs after disposition 
processing has been performed 
for every data set in the step. 



IEFIHMSG 



Write Disposition 
Message 



K2 

< Return For NextN 
SIOT Ptr J 



To Step Termination 
Routine 



160 



Chart 53. Disposition and Unallocation Subroutine — Entry From Job Termination Routine 



I EFZGJ A1 
f Entry J 




From Job 
Termination Routine 



Bl Note 1 
locate \Yes 



Examine Last PDQ 
Entry 




No 
ZHOB10 i Fl 



Process Delete 
Disposition 



€H 



IEFZHMSG 



Write Disposition 
Message 



C Return For Nxt A 
PDQ Entry Ptr/ 

To Job Termination 
Routine 



Note 1-The una I locate 

switch is set when 
all PDQ entries have 
been examined . 



ZNOB26 



Read Data Set's 
SIOT Into Main 
Storage 



0"* 

ZIOB2 u F2 



Process Keep 
Disposition 



Get Next UCB 
Pointer 





<ls There A^ 
Pending > Si _No_ 
Commd For 
This Device' 



Yes 
ZKOE1 I F4 



Process Pending 
Commands 



ZJOB50 ., G4 




Perform 
Unallocation 
(Dismount If 
Possible) 



Charts 161 



Chart 54. 18K Configuration Load Module Control Flow 



( Entry From NIP ) 



IEFVHN 



Interpreter |*- 

Termination 



XCTL 



(Entry From \ 

Supervisor J 



©- 



IEFVH1 



Interpreter 

Initialization 

Routine 



Scan Command 
Routine 



Load And 
Delete 
Note 2 Dl 



IEFVGM1-16 



Messages 



Volume Mounting 
Routine 



Indicative Dump 
Routine 



Interpreter 
Control Routine 



Job Routine 



Execute Routine 



DD Scan Routine 



IEFVGMSS 



Messages 



Post Processing 
Control 



XCTL 



Step Termination 
Routine 



C4 



-*"| Int/lnit Interface 
Routine 



XCTL 



XCTL 



Job Termination 
Routine 



XCTL 



Job Termination 



JFCB Housekeeping 
Error Routines 



System Control *- 
Routine 



XCTL 



E3 Load And 



L^@ 







Link 




IEE START 


Delete 


IEEFJCB 








Master Scheduler 


Link 




Start Command 
Routine 


JFCB'S For Start 
Command Routine 






Link 












. 


, 






1 


XCTL 
If Erro- 

f: 






F4 






IEEFAULT 




^ 


IEESJFCB 
















Fault Routine 


Interface With 
Table Store 
Subroutine 






5vc 
Exit 








Link _j 


, 


XCTL 
If Error 

g: 






G4 




IEESET 






IEFJOBQE 














Svc Exit 


Set Command 
Routine 


Link (At IPL) 


Queue 

Initialization 

Routine 








' 


XCTL 

H3 




©""J H. 




IEETIME 




IEFMCVOL 






Mount Cvol 
Routine 














Superv" 
Time Re 


sor 
utine 



Note 1- The assembly module IEEMCR01 

is included in lood modules IEFVH1 , 
IEFCOMMD, and IEFINTFC. 

Note 2- The message modules IEFVGM1 through 
IEFVGM16 can be loaded and deleted 
by any of the following modules : 
IEFCNTRL, IEFJOB, IEFEXEC, 
IEFVGMSS, and IEFCOMMD. 



IEFALOC1 



Allocation 
Control Routine 



XCTL, 
XCTL J —MH4) 



IEFALOC2 



Demand Allocation 
Routine 



Decision Allocation 
Routine 



TIOT 

Construction 

Routine 



LT0 



External Action 
Routine 



IEFATACH 



Step Initiation 
Routine 



Space Request 
Routine 



Processing 
Program 



Return Or 
Abend 



V To Supervisor 1 



162 



Chart 55. 44K Configuration Load Module Control Flow 



(Entry } 

From NIP J 



XCTL 



c 



Entry From 
Supervisor 



Interpreter 
Initialization 
For Routine 



IEFVGM1-16 



Interpreter 
Error Messages 



And 
Delete 



Load And 
Delete 





IEFPRES 




Volume Mounting 
Routine 





Indicative Dump 
Routine 



XCTL 



Interpreter And *- 
Job Terminate 



Job Termination «* 



XCTL 



XCTL 



D4 



IEFCOMMD 



Processes 

Command 



JFCB 

Housekeeping 
Error Routines 



Note 1 


E2 


Link 




E3 


Load And 


E4 


IEEMCR01 


IEESTART 




IEEJFCB 






Master 
Scheduler 


Link 




Start Command 
Routine 


JFCB'SFor 
Start Command 
Routine 






Link 












i 










' 


XCTL if error 
F3 




F4 








IEEFAULT 






IEESJFCB 
















Fault Routine 


Interface With 
Table Store 
Subroutine 






SVC 
exit 










, 


'XCTL if 
error 

G3 






G4 




Link 


IEESET 






IEFJOBQE 
















Set Command 
Routine 




Queue 

Initialization 

Routine 




Link 
(at IPL) 








XCTL 

H3 








IEETIME 












Supervisor Time 
Routine 





} 



IEFSTERM 



Interface And 

Step 

Termination 



D5 



First Load Of 
Allocation 



XXCTL 



Second Load 
Of Allocation 



Processing 
Program 



Return or 
abend 



V To Supervisor J 



IEFMCVOL 



Mount CVOL 
Routine 



Note 1 - The assembly module IEEMCR0 1 is 

included in load modules IEFVH1 and IEFCOMMD. 

Note 2 - The message modules can be loaded and 
deleted by IEFCNTRL and IEFCOMMD. 



Charts 163 



Chart 56. 100K Configuration Load Module Control Flow 



( Entry From NIP ) 



Interpreter 
Initialization 

t- EOF RTN 



Interpreter 
Messages 



And 
Delete 



Interpreter And 

Initiator 

Terminator 



(Entry From \ 
Supervisor J 



Indicative Dump 
Routine 




(Exit To ~^N 
Supervisor J 



Note 1 - The assembly module 

IEEMCR01 is included in 
load modules IEFVH1 and 
IEFCOMMD. 

Note 2 - The message modules 

can be loaded and deleted 

by IEFCNTRL and IEFCOMMD. 



IEFALLOC 



Allocation And 
Allocation 
Error Routine 



IEEMCR01 



H Link 



Master 
Scheduler 



Link 



C4 





IEFMCVOL 


XCTL 


Mount CVOL 
Routine 





Start Command 
Routine 



Load And 
Delete 



XCTL if 
error 



JFCB'S For 
Start Command 
Routine 



XCTL if 
error 



Set Command 
Routine 



SVC 
exit 



Link 



Interface With 
Table Store 
Subroutine 



Link 



Link 



Supervisor Time 
Routine 



IEFJOBQE 



Queue 

Intialization 

Routine 



164 



Index 



42-44,50 
41 



42-43 



53-54 
43 



ABEND macro instruction 57 
Abnormal termination 59-60,63-64 
ACB (see allocate control block) 
Account control table (ACT) 

construction of 9,28 

description of 65 
Accounting routine 10,38 
Acronyms, list of 108 
ACT (see account control table) 
Affinity 

unit 

link field 45 
requests for 38,54 

volume 

requests for 38 
resolution 45-46 
Allocate chain 53 
Allocate control block (ACB) 
Allocate processing routine 
Allocate volume table (AVI) 

construction of 44-45,53 

storage requirements of 
Allocate work table (AWT) 

construction of 44-45 

entry sources 45 

in decision allocation 

storage requirements of 
Allocation and setup 38,42-57 
Allocation channel mask 47 
Allocation control routine 42-44 
Allocation error routines 42,52,57 
Allocation of resident devices 47 
Allocation, storage requirements of 42-43 
Assembly modules, list of 83-9 8,99-107 
Asynchronous exit queue 14 
Attention interruption 12,14,16 
Automatic checkpoint restart 38 
Automatic volume recognition (AVR) 

42,50-52 
Auxiliary routines 34-37 
Auxiliary work area (AWA) 34 
AVT (see allocate volume table) 
AVR (see automatic volume recognition) 
AWT (see allocate work table) 



CANCEL command 14,16 

in step initiation 57-58 
Cancel ECB (event control block) 

in step initiation 57 

in termination 58 
CATLG disposition 62 
Cataloged data sets 62 
Cataloged procedures 20 
Channel load assignments 
Channel load table (CLT) 

storage requirements of 
Channels, logical 46-50 
Checkpoint restart 

automatic 3 8 

in restart preparation 59 

recognizing 28 



46-50 
46-50,52 
43 



CLT (see channel load table) 

Command-pending switch 10,16-17 

Command pointer 73 

Command routine 22 

Command scheduling control block (CSCB) 37 

Commands 

CANCEL 14,16,57-58 

DISPLAY 14,16,39 

initialization 10,17 

MOUNT 14,16,47 

processing of 12 

REPLY 17' 

REQ 10,14,16 

SET 10,16,17 

START (blank) 10,14,16 

START RDR 16-17,19,37 

START WTR 10,16-17 

STOP 14,16 

STOP WTR 16-17 

UNLOAD 14,16,47,63 

VARY 14,16,63 
Communications vector table (CVT) 73 
Condition codes 

EXEC statement 38 

JOB statement 59 
Condition operators 

EXEC statement 39 

JOB statement 59 
Conditional disposition 64 
Console flag switch 15 
Console interrupt routine 14-16 
Continuation check routine 20-21 
Continuation statement 23 
Control routine 19 

Control sections (CSECTs) , list of 99-107 
Control statement 

DD 10,21,28,41 

DD, parameter dispositions 30-33 

DD, JOBLIB 57 

DD, STEPLIB 57 

EXEC 21-22,28-29,35,77 

EXEC PROC 21 

JOB 21-22,28-29,38 

NULL 10,20-22,38 

PEND 19,21-22 

PROC 19,21-22 

processing of 21-33 

reading 20 
CSCB (see command scheduling control block) 
CSECT (see control sections) 
CVT (see communications vector table) 



DADSM error recovery routine 42,56 

(see also direct access device space 
management routines) 

Data control block (DCB) 20,57 

Data set control block (DSCB) 56 

Data set name (DSNAME) table 
construction of 9 
description of 66 



Index 165 



Data sets 

device requirements of 13-44,46 

disposition of 9,62 

selection of 53 
DCB (see data control block) 
DD statement cleanup routine 28 
DD statement, JOBLIB 57 

DD statement parameter dispositions 30-33 
DD statement processing 21 
DD statement processor routine 28,36 
DD statement scanning and encoding 24-27 
DD statement, STEPLIB 57 
Decision allocation routine 42,52-54 
DELETE disposition 62-63 
Demand allocation routine 42,44-50 
Device allocation 50,53 
Device availability processing 63 
Device mask table (DMT) 

deletion of 50 

description of 66 

functions of 45,49 

storage requirements of 42-43 
Device name table (DNT) 41,66 
Device range reduction 49 
Device strikeout routine 51 
Dictionary entry routine 34,36 
Dictionary search routine 34,36 
Direct access device space management 

(DADSM) routines 56 
Dismount messages 64 
Display command 14,16,39 
Disposition and unallocation 58,60 
Disposition, data set 

CATLG 62 

conditional 64 

DELETE 62-63 

KEEP 62-63 

PASS 62-63 

UNCATLG 62-63 
DMT (see device mask table) 
DNT (see device name table) 
DSCB (see data set control block) 
DSNAME taole (see data set name table) 



ECB (see event control block) 
End-of-data condition 10,16,20 
Entry, post-processing 23 
Error message processing routine 42 
Event control block (ECB) 18 

cancel 57-58 
EXCP macro instruction 14,16-18 
EXEC statement 21-22,28-29,35,77 
EXEC PROC statement 21 
Execute card scan routine 29 
Execute statement cleanup routine 28 
Execute statement condition codes 38 
Execute statement condition operators 39 
Execute statement conditional execution 

routine 39-40 
Execute statement processor routine 28 
External action routine 42,51-52,55-56 
External interrupt routine 14,16-17 

Fetch DCB 57-58 

Fetch DCB processing routine 41 
Flags, in master scheduler resident data 
area 73 



GDG (generation data group) 
all processing routine 41 
single processing routine 41,67 
bias count table, description of 67 

GET macro instruction 20 

Get parameter routine 34 



I/O supervisor 14,16 

I/O supervisor UCB lookup table 53 

In-stream procedure 

definition of 19 

directory 21 

invoking 20 

routine 22 

work area, description of 68 
Indicative dump routine 58 
Initial program loading (IPL) 10,16,19,38 
Initialization 

commands 10,17 

functions 58 

routines 17,19 

switches 73 
Initiator control routines 38-39 
Initiator/terminator 

functions of 9-10 

routines 38-60 
Input queue entry 22 
Input stream, definition of 19 
Interpreter 

control routine 36,81 

DD routine 66,77,81 

entrance list (NEL) 37 

EODAD exit routine 20 

functions 9-10,14,16-17 

get routine 20-21,23 

message routine 36 

processing 19-37 

system output routine 28 

termination routine 20-21,37 

work area (IWA) 21 
Interpreter/initiator interface 22,59 
Interrupt key 9-10,13,15,17 
Interruption 

attention 12,14-16 

external 12,15 

I/O 14,52 

SVC 14,17 
Interruption gueue element 14,16 
Interruption request block (IRB) 14,16 
Interruption request block routine 14,16 
IPI (see initial program loading) 
IPI/NIP parameter list data set, PRESRES 

member of 47-48 
IPL pending switch 17 
IRB (see interruption request block) 
IWA (see interpreter work area) 

JCL get parameter routine 28 

JCL header routine 28 

JCL keyword entry 35 

JCL keyword routine 28-34 

JCL keywords 24 

JCL scan dictionary 24 

JCL scanning routine 24-27 

JCL statement 

processing 28-37 

scanning 24-27 



166 



JCT (see job control table) 
JFCB (see job file control block) 
Job and step enqueue routine 22-23 
Job control language (see JCL) 
Job control table (JCT) 

construction of 9 

description of 69-70 

in initiation 57 

in interpreter processing 22,37 

in restart 28 

in termination 58-59 
Job file control block (JFCB) 

construction of 9 

description of 71-72 

in auxiliary routines 36 

in interpreter processing 28 

in step initiation 57 

housekeeping control routine 41 

housekeeping routines 40-42,66-67,76,81 

pointer 54 

scratch information 56 
Job library data set 38,54,57-58 
Job management 

components of 9,10 

entry to 10 

functions of 9 

routines 70 
Job processing 10 
Job queue, selected 39 
Job scheduler, functions of 9 
JOB statement 10,21-22,28-29,38 
Job statement condition code routine 58-59 
Job statement processor routine 28,34-36 
Job termination routine 10,59-60 
Job validity check routine 21 
JOBLIB DD statement 57 



KBT (see keyword branch table) 
KEEP disposition 62-63 
Keyword branch table (KBT) 34 



LCT (see linkage control table) 
Library 

job 38,57 

linkage 13 

procedure 19-20 

step 57 

SVC 13,16 
Linkage control table (LCT) 38-40,57-59 
Linkage library 13 
Load, channel 47 
Load modules, list of 83-98 
Local work area (LWA) 20,28,37 
LOCATE macro instruction 41 
Logical channels 46-48 
LWA (see local work area) 



Itocro instruction 
EXCP 14,16-17 
GET 20 
LOCATE 41 
OBTAIN 40 
READ 20 
SCHEDULR 17 
TTIMER 20 



Macro instruction (continued) 

WTO 9-10,13-14,17 

WTOR 9-10,13-14,17 
Macro parameter list 

construction of 9-10,14 

format of 58 
Main storage hierarchy support 28 
Master command EXCP routine 13-14,16-17 
Master command routine 14-17,22 
Master common area 73 
Master scheduler 

functions of 9-10,14 

control flow 14 

resident data area 73-74 
Message routine 22,34 
Message routine codes 17 
Messages 

dismount 64 

programmer 10,12,17-18,38,58 
MOUNT command 14,16 
Mounted volumes, processing requests for 

51 
Mutually exclusive parameters 24 



NEL (see interpreter entrance list) 

New reader or writer table, description of 

75 
New reader pending switch 17 
New writer pending switch 17 
Non-standard label (NSL) processing 50 
Nucleus transient area 16 
NULL statement 10,20-22,38 



OBTAIN macro instruction 40 
Operator commands 9-10,12-14 
Operator-system communication 10-12 



Parameter 

mutually exclusive 24 

no- action 35 

positional 24,34-35 

required- format 35 

unconditional-action 35 

variable-format 35 
Parameter descriptor table (PDT) 35-36 
PASS disposition 62-63 
Passed data set queue (PDQ) 

construction of 39-41 

description of 76-77 

disposition 63-64 

termination 59-60 
Patterning DSCB routine 42 
PDQ (see passed data set queue) 
PDQ block 76 
PDQ directory block 76 
PDQ overflow block 76 
PDT (see parameter descriptor table) 
PEND statement 19,21-22 
Permanently resident volume 47 
Positional parameters 24,34-35 
Post-scan routine 23 

Potential user on device (PUD) table 43,53 
Pre-scan preparation routine 21-23,28 
PRESRES member of IPL/NIP parameter list 
data set 47-48 



Index 167 



Primary console switching, functions of 

13-15 
PROC statement 19,21-22 
Procedure library 19-20 
Proceed light 14 

Programmer messages 10,12,17-18,38,58 
Pseudo SYSOUT routine 57 
PUD table (see potential user on device 

table) 



Queue entry processing 22 

Queue management assign and start routines 

22 
Queue management read routine 40 
Queue manager interface routine 

22,34,36-37 
Queue manager parameter area 36-37 



READ macro instruction 20 

Reader/interpreter job routine 69 

Refer-back dictionary 36 

Release job gueue routine 59 

REPLY command 17 

REQ command 10,14,16 

Reguest block gueue 10 

Reguest key 10,13-14 

Resident devices, allocation of 47 

Resident job gueue option (RESJQ) 60-61 

Restart, checkpoint 28-29,38,59 

Restart preparation routine 58-59 

Restart, step 28-29,59 

Router routine 21-22 



Scheduler lookup table 46-48 

SCHEDULR macro instruction 17 

SCT (see step control table) 

SCT extension block 79 

Separation, channel 52 

Separation strikeout pattern, storage 

reguirements of 43 
Separation strikeout routine 52 
Separation, unit 52 
SET command 10,16-17 
SIOT (see step input/output table) 
SMB (see system message block) 
Space reguest routine 42,52,56 
START command 

(blank) 10,14,16 

RDR 10,14,16,37 

WTR 10,14,16 
Statement, continuation 23 
Statement processing routine 23-24 
Statement, overriding 23 
Step control table (SCT) 22-23,38,40 

construction of 9 

description of 77-78 

disposition 58 

DSNAME table pointer in 66 

in initiation 38 

in JCL processing 22,36 

in JFCB housekeeping 40 

in termination 59 

storage 57 
Step initiation routines 10,38,57-58,69,77 



Step input/output table (SIOT) 

construction of 9 

description of 79-80 

disposition field 62 

DSNAME table pointer in 66 

in JCL processing 28,36 

in JFCB processing 40-41 

in termination 59 

storage reguirements of 43 
Step library data set 57 
Step restart 28-29,59 
Step termination 10,58-59 

control routine 58-59 

data set driver routine 58-59 

exit routine 59 
STEPLIB DD statement 57 
STOP command 14,16 
STOP WTR command 16-17 
Storage volume, definition of 49 
Supervisor 10,14-18 
Supervisor call (SVC) 

interruption 14 

library 12,16 

transient area 14,16-17 

34 instruction 16-17 

35 instruction 14 

90 instruction (see transient gueue 
manager) 
SYSGEN (see system generation) 
SYSIN, allocation of 50 
SYSOUT 

data set 17 
routine 75 
System generation (SYSGEN) 17 
System message block (SMB) 9,17-18,21-22 
allocation messages 56-57 
construction of 9,20 
description of 81 
in termination 58-60 
SYS1.LINKLIB (linkage library data set) 

12,41,45 
SYS1.PARMLIB (parameter library data set) 

47-48 
SYS1.PROCLIB (procedure library data set) 

22 
SYS1.SVCLIB (supervisor call library data 

set) 12,16 
SYS1.SYSJOBQE (job gueue data set) 
17,61,75,81 

Table store subroutine, functions of 61-62 
Task control block (TCB) 16,59,82 
Task input/output table (TIOT) 
compression routine 42,56 
construction routine 42,52,54-55 
disposition 58-59,62 
in step termination 57 
storage reguirements of 42-43 
Termination 10,38,58-60 
Test and store routine 28,34-36 
TCB (see task control block) 
TIOT (see task input/output table) 
Transient gueue manager (SVC 90) 17-18 
TTIMER macro instruction 20 

UCB (see unit control block) 
UNCATLG disposition 62-63 
Unit affinity 38,45,54 



168 



Unit control block (UCB) 
44-47,49-51,53,56-57,64 
UNLOAD command 14,16,47,63 
Unmounted volumes, requests for 51 
Unreceived data sets 60 
Unspecified volumes, allocation of 



VARY command 14,16,63 
Verb identification routine 
VOLT (see volume table) 
Volume affinity 38,4 5,53 
Volume control block 41,51 
Volume list 62 
Volume serial numbers 

list of 81 

processing 50-52 



52-54 



Volume table (VOLT) 40,43,66 
construction of 9 
description of 81 



Write- to-operator (WTO) 

macro instruction 9-10,12,14,17,39 

routine 14,17-18 
Write- to-operator-with-reply (WTOR) 

macro instruction 9-10,12,14,17 

routine 17-18 
Write-to-programmer (WTP) 10,12,17-18,38 
Write-to-programmer control block (WTPCE) 
38, 82 



Index 169 



READER'S COMMENT FORM 

IBM System/360 Operating System 

Job Management Order No. GY28-6613-5 

Program Logic Manual 

• Is the material: Yes No 

Easy to read? □ □ 

Well organized? □ □ 

Complete? □ □ 

Well illustrated? D D 

Accurate? □ □ 

Suitable for its intended audience? □ □ 

How did you use this publication? 

□ As an introduction to the subject Other 

□ For additional knowledge 

Please check the items that describe your position: 

□ Customer personnel □ Operator □ Sales Representative 

□ IBM personnel □ Programmer □ Systems Engineer 

□ Manager □ Customer Engineer □ Trainee 

□ Systems Analyst □ Instructor Other 



• 



• Please check specific criticism ( s ) , give page number ( s ) , and explain below: 

□ Clarification on page ( s ) □ Deletion on page ( s ) 

□ Addition on page ( s ) □ Error on page ( s ) 

Explanation: 



Thank you for your cooperation. No postage necessary if mailed in the U.S.A. 



GY28-6613-5 



YOUR COMMENTS, PLEASE . . . 

This manual is part of a library that serves as a reference source for systems analysts, 
programmers and operators of IBM systems. Your answers to the questions on the back 
of this form, together with your comments, will help us produce better publications for 
your use. Each reply will be carefully reviewed by the persons responsible for writing 
and publishing this material. All comments and suggestions become the property of IBM. 

Note : Please direct any requests for copies of publications, or for assistance in using your 
IBM system, to your IBM representative or to the IBM branch office serving your locality. 



Fold 



Fold 



FIRST CLASS 
PERMIT NO. 81 
POUGHKEEPSIE, N.Y. 



BUSINESS REPLY MAIL 

NO POSTAGE STAMP NECESSARY IF MAILED IN THE UNITED STATES 



POSTAGE WILL BE PAID BY ... 

IBM Corporation 
P.O. Box 390 
Poughkeepsie, N.Y. 12602 




Attention: Programming Systems Publications 
Department D58 



Fold 



Fold 



International Business Machines Corporation 
Data Processing Division 
112 East Post Road, White Plains, N.Y. 10601 
[USA Only] 

IBM World Trade Corporation 

821 United Nations Plaza, New York, New York 10017 

(International! 



GY28-6613-5 



s: 



International Business Machines Corporation 

Data Processing Division 

112 East Post Road, White Plains, NY. 10601 

lUSAOnly] 

IBM World Trade Corporation 

821 United Nations Plaza,NewYork,NewYorklQ017 

[International]